Рассмотрим следующий код:
template<bool> class StaticAssert;
template<> class StaticAssert<true> {};
StaticAssert< (-1 < sizeof(int)) > xyz1; // Compile error
StaticAssert< (-1 > sizeof(int)) > xyz2; // OK
Почему -1 > sizeof(int)
true?
- Верно ли, что
-1
продвигается доunsigned(-1)
, а затемunsigned(-1) > sizeof(int)
. - Верно ли, что
-1 > sizeof(int)
эквивалентно-1 > size_t(4)
, если sizeof (int) равно 4. Если это так, то почему-1 > size_t(4)
является ложным?
Является ли этот стандартный компилятор С++?