通過使用類型特徵,我可以發現一個類型是整數還是一個指針(以及更多)。是否也可以找出傳遞的指針是否是整型數據類型(int,
float
,char)而不是對象?我可以通過類型特徵確定指針是否爲整型:
編輯:除了Armen's答案,如果有人使用洛基庫而不是加速的remove pointer
功能類似於TypeTraits::PointeeType
通過使用類型特徵,我可以發現一個類型是整數還是一個指針(以及更多)。是否也可以找出傳遞的指針是否是整型數據類型(int,
float
,char)而不是對象?我可以通過類型特徵確定指針是否爲整型:
編輯:除了Armen's答案,如果有人使用洛基庫而不是加速的remove pointer
功能類似於TypeTraits::PointeeType
boost::is_pointer<T>::value &&
boost::is_integral<boost::remove_pointer<T>::type>::value
順便說一句float
組是不完整。您可能需要is_arithmetic
如果您無法訪問Boost(或者如果Boost實現使用很多您不想去的機器),您可以從std :: numeric_limits
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 ...
我不認爲這回答了這個問題。問題是:如何確定T是否是指向* integral *類型的指針?你的特徵告訴我T是否是一般指針。 –
你說得對,我誤讀了。 –
'整型數據類型(int,float,char)'?浮動也是不可或缺的? – Nawaz
浮點數不是整數,並且int,float和char類型的對象都是,也是對象。 – jalf