康桓瑋*_*康桓瑋 7 c++ lambda c++-concepts c++20
考虑需要表达式:
constexpr auto b = requires { []{}; };
Run Code Online (Sandbox Code Playgroud)
GCC通过以下两个static_assert:
static_assert(b);
static_assert(!b);
Run Code Online (Sandbox Code Playgroud)
这看起来非常奇怪。我希望 的值b应该是true。这只是一个 GCC 错误吗?
这不是 Schr\xc3\xb6dinger\ 的要求:b显然应该是true或false。
这里的要求:
\nconstexpr auto b = requires { []{}; };\nRun Code Online (Sandbox Code Playgroud)\n是一个简单的要求。我们只是检查表达式是否是 []{}有效的表达式。而且……确实如此!所以b应该是真的。这是一个 gcc 错误(而且StoryTeller 的示例证明,在稍微不同的拼写中,b甚至不能算作常量表达式)。