考虑requires表达式:
constexpr auto b = requires { []{}; };
GCC通过以下两个static_assert
:
static_assert(b);
static_assert(!b);
这看起来非常奇怪。我期望b
的值应该是true
。这只是GCC Bug吗?
这不是薛定谔的要求:b
显然应该是true
或false
。
这里的要求:
constexpr auto b = requires { []{}; };
是的简单要求。我们只是检查表达式[]{}
是否是有效的表达式。和是的!所以b
应该是真的。这是一个gcc错误(StoryTeller的例子证明,在一个稍微不同的拼写中,b
甚至不算是一个常量表达式(。