有没有办法判断一个模板参数是一个特定的基本数据类型,比如int还是unsigned int?std::is_base_of不会这么做,我试过了。我想写一些可以封装所有基本数据类型的集合,但我找不到一种方法来辨别它是哪种类型……
发布于 2013-01-17 08:25:07
使用is_same。如果您没有实现(std或boost),则使用以下代码:
template < typename T1, typename T2 >
struct is_same { enum { value = false }; };
template < typename T >
struct is_same <T,T> { enum { value = true }; };发布于 2013-01-17 08:17:09
以下是一些有用的建议:
std::is_integral
std::is_floating_point
std::is_arithmetic
如果你需要更狭义的定义,你可以或几个std::is_same特征在一起,例如
template<typename T>
struct is_int_or_char_or_float {
static const bool value =
std::is_same<T, int>::value ||
std::is_same<T, char>::value ||
std::is_same<T, float>::value;
};发布于 2013-01-17 08:15:07
如果想知道它是否是特定类型,可以使用std::is_same
#include <type_traits>
bool isInt = std::is_same<int, T>::value;如果您想知道它是否是任何整数类型,则std::is_integral
bool isInt = std::is_integral<T>::value;https://stackoverflow.com/questions/14370207
复制相似问题