================ @@ -599,3 +599,39 @@ template <class DerT> unsigned long DerivedCollection<DerTs...>::index() {} } // namespace GH72557 + +namespace GH102320 { + +template <class, class> +concept Constrained = true; + +template <class T> class C { + template <Constrained<T>> class D; + template <class U> + requires Constrained<T, U> + class E; +}; + +template <class T> template <Constrained<T>> class C<T>::D {}; + +template <class T> +template <class U> + requires Constrained<T, U> +class C<T>::E {}; + +#if 0 +// FIXME: Is it conforming? Only Clang rejects it in every released version. +template <> +template <Constrained<int> T> +class C<int>::D<T> {}; +#endif + ---------------- zyn0217 wrote:
I DIDN’T say this is a regression, but rather we’ve been rejecting it in many versions. The function per se is called SubstituteConstraintExpressionWithoutSatisfaction, so not transforming the constraint appears to go against the intention of it to me. https://github.com/llvm/llvm-project/pull/102587 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits