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.