类型特征对于基本类型的所有const/volatile/signed/unsigned版本都是如此

Vin*_*ent 3 c++ qualifiers type-traits c++11

考虑以下测试:

std::is_same<T, bool>::value
std::is_same<T, char>::value
std::is_same<T, short int>::value
std::is_same<T, int>::value
std::is_same<T, long int>::value
std::is_same<T, long long int>::value
std::is_same<T, float>::value
std::is_same<T, double>::value
std::is_same<T, long double>::value
Run Code Online (Sandbox Code Playgroud)

问题是,如果T = const unsigned char所有测试都是假的,我希望这个std::is_same<T, char>::value是真的.或者,如果T = volatile signed long long int我想std::is_same<T, long long int>::value成为现实.怎么做type_traits

hmj*_*mjd 7

使用std::remove_cv删除constvolatile如果存在的话:

std::is_same<std::remove_cv<T>::type, long long int>::value;
Run Code Online (Sandbox Code Playgroud)