模板:如何判断模板参数T为内建数据类型
来源:互联网 发布:双色球 知乎 编辑:程序博客网 时间:2024/05/18 01:59
#include <iostream>
#include <string>
using namespace std;
//基本模板,一般情况下T不是基本类型
template <typename T>
class IsFundaT {
public:
enum { Yes=0, No=1 };
};
//用于特化基本类型的宏
#define MK_FUNDA_TYPE(T) \
template<> class IsFundaT<T> { \
public: \
enum { Yes=1, No=0 }; \
}; \
//内建类型的具体特化
MK_FUNDA_TYPE(void)
MK_FUNDA_TYPE(bool)
MK_FUNDA_TYPE(char)
MK_FUNDA_TYPE(signed char)
MK_FUNDA_TYPE(unsigned char)
MK_FUNDA_TYPE(wchar_t)
MK_FUNDA_TYPE(signed short)
MK_FUNDA_TYPE(unsigned short)
MK_FUNDA_TYPE(signed int)
MK_FUNDA_TYPE(unsigned int)
MK_FUNDA_TYPE(signed long)
MK_FUNDA_TYPE(unsigned long)
#if LONGLONG_EXISTS
MK_FUNDA_TYPE(signed long long)
MK_FUNDA_TYPE(unsigned long long)
#endif //LONGLONG_EXISTS
MK_FUNDA_TYPE(float)
MK_FUNDA_TYPE(double)
MK_FUNDA_TYPE(long double)
//以下为测试程序
template <typename T>
void test(const T& t){
if(IsFundaT<T>::Yes){
cout<<"T is fundamental type" <<endl;
}else {
cout<<"T is not fundamental type" <<endl;
}
}
class MyType{
};
int main(int argc, char *argv[]){
test(7);
test(7.1);
test(MyType());
return 0;
}
#include <string>
using namespace std;
//基本模板,一般情况下T不是基本类型
template <typename T>
class IsFundaT {
public:
enum { Yes=0, No=1 };
};
//用于特化基本类型的宏
#define MK_FUNDA_TYPE(T) \
template<> class IsFundaT<T> { \
public: \
enum { Yes=1, No=0 }; \
}; \
//内建类型的具体特化
MK_FUNDA_TYPE(void)
MK_FUNDA_TYPE(bool)
MK_FUNDA_TYPE(char)
MK_FUNDA_TYPE(signed char)
MK_FUNDA_TYPE(unsigned char)
MK_FUNDA_TYPE(wchar_t)
MK_FUNDA_TYPE(signed short)
MK_FUNDA_TYPE(unsigned short)
MK_FUNDA_TYPE(signed int)
MK_FUNDA_TYPE(unsigned int)
MK_FUNDA_TYPE(signed long)
MK_FUNDA_TYPE(unsigned long)
#if LONGLONG_EXISTS
MK_FUNDA_TYPE(signed long long)
MK_FUNDA_TYPE(unsigned long long)
#endif //LONGLONG_EXISTS
MK_FUNDA_TYPE(float)
MK_FUNDA_TYPE(double)
MK_FUNDA_TYPE(long double)
//以下为测试程序
template <typename T>
void test(const T& t){
if(IsFundaT<T>::Yes){
cout<<"T is fundamental type" <<endl;
}else {
cout<<"T is not fundamental type" <<endl;
}
}
class MyType{
};
int main(int argc, char *argv[]){
test(7);
test(7.1);
test(MyType());
return 0;
}
0 0
- 模板:如何判断模板参数T为内建数据类型
- 模板:如何判断模板参数T为内建数据类型(2)
- 模板的使用:如何判断参数是否为一个类
- 如何在模板判断
- 利用模板判断模板参数类型
- C++模板参数为数组
- 模板[点在多边形内的判断]
- django 模板内建的模板过滤器
- 分析模板参数中 T& 与T 的区别
- C++ Template初探:以模板为参数的模板
- smarty模板判断数组为空
- 模板的模板参数
- 模板模板参数
- C++ 模板模板参数
- 模板参数
- 模板参数
- 模板参数
- 模板标签之如何传递模板标签参数
- windows自动挂载VHD虚拟硬盘
- git命令大全
- javaweb国际化问题
- 【连通性状态压缩DP】URAL1519
- Spark经典案例1-通过采集的气象数据分析每年的最高温度
- 模板:如何判断模板参数T为内建数据类型
- 孤儿进程与僵尸进程[总结]
- 大神总结的App重构经验
- c——内置类型提升
- android 上传图片(压缩) Bitmap 转File
- TCP socket网线断开判断
- 持久层框架之MyBatis
- 3des加密Android和iOS的加密算法有时候位数是不同的。解决办法
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)