【发布时间】:2021-06-09 05:38:54
【问题描述】:
考虑 requires 表达式:
constexpr auto b = requires { []{}; };
GCCpass以下两个static_assert:
static_assert(b);
static_assert(!b);
这看起来非常奇怪。我希望b 的值应该是true。这只是一个 GCC 错误吗?
【问题讨论】:
-
绝对看起来像是某种错误。如果我们将
b明确声明为布尔值godbolt.org/z/1ebTP6,那就更奇怪了 -
除非代码是格式错误的 NDR,否则我会说 gcc 错误,clang/msvc 拒绝它Demo。
-
@StoryTeller-UnslanderMonica。好的,那我报告它here。
-
@Jarod42。这段代码格式正确。 Clang 没有实现P0315R4,这是一个 MSVC 错误。
-
fwiw,怪异的不同化身:godbolt.org/z/bbKTnh
标签: c++ lambda c++20 c++-concepts