C++20的怪异返回值需要表达式



考虑requires表达式

constexpr auto b = requires { []{}; };

GCC通过以下两个static_assert:

static_assert(b);
static_assert(!b); 

这看起来非常奇怪。我期望b的值应该是true。这只是GCC Bug吗?

这不是薛定谔的要求:b显然应该是truefalse

这里的要求:

constexpr auto b = requires { []{}; };

的简单要求。我们只是检查表达式[]{}是否是有效的表达式。和是的!所以b应该是真的。这是一个gcc错误(StoryTeller的例子证明,在一个稍微不同的拼写中,b甚至不算是一个常量表达式(。

最新更新