Рассмотрим следующий код:
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)является ложным?
Является ли этот стандартный компилятор С++?