可以使用define来简化.
- 方法1
template <typename T>
struct is_double
{
operator bool()
{
return false;
}
};
template <>
struct is_double<double>
{
operator bool()
{
return true;
}
};
//使用方法
if (!is_double<int>())
- 方法2
#include <iostream>
#include <string>
using namespace std;
struct FalseType
{
static bool Get()
{
return false;
}
};
struct TrueType
{
static bool Get()
{
return true;
}
};
template<class T>
struct TypeTraits
{
typedef FalseType PODTYPE;
};
template<>
struct TypeTraits<int>
{
typedef TrueType PODTYPE;
};
template<>
struct TypeTraits<char>
{
typedef TrueType PODTYPE;
};
template<>
struct TypeTraits<double>
{
typedef TrueType PODTYPE;
};
template<>
struct TypeTraits<float>
{
typedef TrueType PODTYPE;
};
//使用方法
TypeTraits<int>::PODTYPE::Get()