https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114504
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |c++-lambda Summary|Non-structural type |Non-structural type |accepted as non-type |accepted as non-type |template parameter type |template parameter type for |while in concept |a template lambda function | |while in a concept --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note GCC does the correct thing for: ``` ... template <typename T, T a> int f(void) { return 0; } template <typename T> concept is_structural = requires { f<T, T{1}>(); }; static_assert(!is_structural<NonStructuralType>); ``` So it is looking lambda related. This also fails: ``` ... template <typename T> void f(void) { []<T t> {}; } template <typename T> concept is_structural = requires { f<T>(); }; static_assert(!is_structural<NonStructuralType>); ``` More proof that is lambda related.