通过使用类型特征,我可以找出一个类型是否是整数或指针(以及更多)。是否还可能找出传递的指针是基本数据类型(int,float,char)而不是对象的指针?
编辑:除了Armen's的答案之外,如果有人使用LOKI库而不是Boost,那么
remove pointer
的功能类似于TypeTraits :: PointeeType
。remove pointer
的功能类似于TypeTraits :: PointeeType
。boost::is_pointer<T>::value &&
boost::is_integral<boost::remove_pointer<T>::type>::value
顺便提一句,float
不是整数类型。你可能需要使用 is_arithmetic
。
std::numeric_limits<T>::is_integer
开始向外扩展。话虽如此,如果有必要避免使用Boost中的某些内容,那么本答案中使用的内容并不是其中真正需要避免的,因为它们即将在C++0x中推出。 - Steve Jessoptemplate <typename T>
struct IsPointerToInt {
static const bool value = false;
};
template <>
struct IsPointerToInt<int *> {
static const bool value = true;
};
// ... other specializations for the types you are interested in ...