Рассмотрим следующие тесты:Тип черты Wich верно для всех сопз/летучего/подпись/без знака версии фундаментального типа
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
Проблема заключается в том, если 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
?
Я проектирую класс для определения моделей данных файлов, созданных гетерогенной системой, а подписи/неподписанные версии типов кодируются с таким же количеством байтов. – Vincent
'unsigned char',' signed char' и регулярный 'char' являются тремя различными типами (см. §3.1.1.1). Поэтому пример не будет прав, поскольку вы создаете 'подписанный символ' и сравниваете его с регулярным' char'. Не стесняйтесь протестировать его: https://ideone.com/T8QdYw –