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.

Reply via email to