================ @@ -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 think if we really need to end up with an approach that by not transforming it, we should do the check/special-casing inside getTemplateInstantiationArgs(), rather than doing that at the call site. 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