考虑以下代码:
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)。 -1 > sizeof(int)如果sizeof (int) 是 4 是真的吗?-1 > size_t(4)如果是这样,为什么-1 > size_t(4)是假的?
这是符合 C++ 标准的吗?