考虑 requires 表达式:
constexpr auto b = requires { []{}; };
海合会pass以下两个static_assert
: static_assert(b);
static_assert(!b);
这看起来非常奇怪。我期望 b
的值应该是 true
.这只是一个 GCC 错误吗?
最佳答案
这不是薛定谔的要求:b
显然应该是 true
或 false
.
这里的要求:
constexpr auto b = requires { []{}; };
是一个简单的需求。我们只是检查表达式 []{}
是否是一个有效的表达式。而且……是!所以b
应该是真的。这是一个 gcc 错误(StoryTeller's example 更是如此,这表明在略有不同的拼写中 b
甚至不能算作常量表达式)。
关于c++ - C++20 的奇怪返回值需要表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66578966/