https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94333
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org Status|UNCONFIRMED |NEW Last reconfirmed| |2020-03-26 Ever confirmed|0 |1 --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, started with r9-4045-g0c1e0d63fe0ceabb. Before that it was rejected with: pr94333.cc:7:45: error: lambda-expression in unevaluated context 7 | static yes check(U u) requires(requires{[](auto u){auto [a, b] = u;}(u);}); | ^ pr94333.cc:7:76: error: expected ‘}’ before ‘;’ token 7 | static yes check(U u) requires(requires{[](auto u){auto [a, b] = u;}(u);}); | ~ ^ pr94333.cc:7:76: error: expected ‘)’ before ‘;’ token 7 | static yes check(U u) requires(requires{[](auto u){auto [a, b] = u;}(u);}); | ~ ^ | ) pr94333.cc:7:78: error: expected ‘;’ before ‘)’ token 7 | static yes check(U u) requires(requires{[](auto u){auto [a, b] = u;}(u);}); | ^ | ; pr94333.cc:8:12: error: ‘no’ does not name a type 8 | static no check(...); | ^~ pr94333.cc:9:44: error: ‘T’ was not declared in this scope 9 | static constexpr bool y = sizeof(check(T())) == sizeof(yes); | ^ pr94333.cc:9:38: error: ‘check’ was not declared in this scope 9 | static constexpr bool y = sizeof(check(T())) == sizeof(yes); | ^~~~~ pr94333.cc:9:60: error: ‘yes’ was not declared in this scope 9 | static constexpr bool y = sizeof(check(T())) == sizeof(yes); | ^~~ pr94333.cc:10:1: error: expected declaration before ‘}’ token 10 | }; | ^ pr94333.cc: In function ‘int main()’: pr94333.cc:21:50: error: ‘y’ is not a member of ‘has2param<point>’ 21 | constexpr bool ans = has2param<decltype(p)>::y; | ^