https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118187
--- Comment #2 from Hubert Tong <hstong at ca dot ibm.com> ---
(In reply to Patrick Palka from comment #1)
> The ttp's constraints can depend on outer template parameters, which I think
> prevents us from being able to check its constraints before instantiation in
> general?
>
> template <typename T, typename U>
> concept C = T::value;
>
> template <typename> struct Q;
>
> template <typename T, template <typename U> requires C<T, U> class TT>
> struct A {
> TT<int> *p;
> };
>
> A<int, Q> a;
Good point. That is true. The wording does not actually require doing the check
before instantiation though. What it does require is to perform a check using
the TTP's constraints when the instantiation occurs (if not done earlier).