https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86009

--- Comment #2 from Hubert Tong <hstong at ca dot ibm.com> ---
After adding "auto" for "Concept auto":
template <typename T, typename U> concept C0 = true;
template <typename T> concept C1 = true;
void f(C0<C1 auto> auto *) { }

template void f<wchar_t, short>(wchar_t *);

We now get:
<source>:5:15: error: template-id 'f<wchar_t, short int>' for 'void
f(wchar_t*)' does not match any template declaration
<source>:3:6: note: candidate is: 'template<class auto:1, class auto:2> 
requires (C1<auto:1>) && (C0<auto:2, auto:1>) void f(auto:2*)'

So, we no longer get extra parameters, just the parameters in the reverse order
of  "the order of appearance".

The issue being described by this bug report is fixed, and the remaining case
is likely to be invalid anyway. The wording that allows the `C1 auto`
placeholder is likely a wording mistake in the context of C++2a.

Reply via email to