通过使用类型特征,我可以找出类型是整数还是指针(以及更多)。是否也可以确定传递的指针是否是整数数据类型(int, float ,char)而不是对象?
编辑:除了Armen's回答之外,如果有人使用LOKI库而不是Boost,则remove pointer
的功能类似于TypeTraits::PointeeType
< / p>
答案 0 :(得分:4)
boost::is_pointer<T>::value &&
boost::is_integral<boost::remove_pointer<T>::type>::value
Btw float
不是不可或缺的。您可能需要is_arithmetic
答案 1 :(得分:0)
template <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 ...