次のコードを検討してください。
template<bool> class StaticAssert;
template<> class StaticAssert<true> {};
StaticAssert< (-1 < sizeof(int)) > xyz1; // Compile error
StaticAssert< (-1 > sizeof(int)) > xyz2; // OK
なぜ-1 > sizeof(int)
本当ですか?
- に昇格
-1
しunsigned(-1)
、その後unsigned(-1) > sizeof(int)
. - sizeof(int) が 4 の場合
-1 > sizeof(int)
と同等であることは trueですか。そうである場合、 false はなぜですか?-1 > size_t(4)
-1 > size_t(4)
これは C++ 標準に準拠していますか?