[clang] [Clang][Concepts] Fix a constraint comparison regression for out-of-line ClassTemplateDecls (PR #102587)
Qizhi Hu via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 9 22:37:25 PDT 2024
================
@@ -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
+
----------------
jcsxky wrote:
I don't think we need this regression. As pointed in this [comment](https://github.com/llvm/llvm-project/pull/102554#discussion_r1710667937), we should not transform `ConceptSpecializationExpr` which makes the depth incorrect. I tested locally and my origin approach also makes sense to this case.
https://github.com/llvm/llvm-project/pull/102587
More information about the cfe-commits
mailing list