考虑以下代码:
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++ 标准的吗?