различия в поведении char, signed char и unsigned char
В приведенном ниже коде компиляция проходит успешно, однако поведение типа char отличается от поведения целочисленных типов.
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()В результате получаются три шаблона инстанцирования для трех типов: int8, uint8 и char. Почему это происходит?
То же самое неверно для целых чисел: int и uint32 приводят к одному инстанцированию шаблона, а signed int — к другому.
Вероятно, причина в том, что C рассматривает char, signed char и unsigned char как три разных типа. В то время как int совпадает с signed int. Так ли это, или я что-то упускаю?
#include
using namespace std; typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; typedef signed int int32; typedef unsigned int uint32; typedef signed long long int64; typedef unsigned long long uint64; struct TrueType {}; struct FalseType {}; template struct isX { typedef typename T::ikIsX ikIsX; }; // Это int==int32 неоднозначно //template bool getIsTrue(); template ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() Я использую g 4.something
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3