-
慕粉4447226
用模板特化可以实现的。
楼主可以了解一下libboost库,里面的模板元编程有对应的解决方案。
-
慕粉4447226
使用元模板编程可以实现:
template <typename T1,typename T2>
struct IsSame{
static const bool Value=false;
};
template <typename T>
struct IsSame<T>{
static const bool Value=true;
};
如果两个模板参数相同,那么IsSame会特化为第二种形式,此时Value的值为真。
元模板编程是图灵完整的,还可以完成很多东西,例如判断继承关系、判断类里面是否有某种符号、判断类是否有纯虚函数、使用c++98判断表达式类型等等。这些功能都是编译期实现的,没有运算负担。不好的就是有点难学,编译速度会变慢。楼主可以了解一下boost库。
-
侃侃无极
if(sizeof(int)==sizeof(name))printf("变量name是 int 数据类型");简单的数据类型可以,需要先检查一下你需要判断的数据类型的字节数各为多少?如果有重复的就比较麻烦啦。例如:float与long就都是4,就看你的需求啦。
-
手掌心
C语言没有反射。最多用sizeof来判断变量大小,但也不能精确的分辨类型。要不你把所有要用到的变量名和类型放列表里遍历?