一、场景应用
在一个开发场景下,需要动态处理不同类型的数据写入。本来这个非常简单,只要定义一个模板即可搞定,但这里偏偏有一个细节,是调用别人的库来实现写入。而这个库对不同的数据类型的写入,提供了N种不同的函数,这些函数只是名字和写入数据类型不同,其它都完全一样。象下面的样子:
void putIntData(int *buf,int count,...);
void putCharData(char*buf,int count,...);
void putFloatData(float*buf,int count,...)
......
如果在上层应用调用这些函数,如下:
int * buf[1024] = {
......};
int size = 1024;
void SaveData(int *buf,uint32_t size)
{
if(std::is_same_v<decltype(buf[0]),int>)
{
putIntData(buf,size,...);
}