https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92787
Bug ID: 92787 Summary: P0634R3 is not implemented correctly if parameter-declaration appears in a default argument Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: boostcpp at gmail dot com Target Milestone: --- The lambda expression's parameter-declaration don't assume a qualified-id to name a type if that parameter-declaration appears in a default argument. > parameter-declaration in a lambda-declarator, unless that > parameter-declaration appears in a default argument, or parameter-declaration of a (non-type) template-parameter. template < typename T > // lambda expression's parameter-declaration appears in a default argument void f( typename T::type x = []( T::type x ){return x ;}( typename T::type{}) ) { } https://wandbox.org/permlink/7d2d6aqjZWOhL5Pq But current GCC 10 head assume it to name a type. Or am I reading the wording wrong?