D128750 incorrectly skips constraints partial ordering for deduction guide.
This patch reverts that part.
Fixes https://github.com/llvm/llvm-project/issues/58456.
}
}
- if (!Context.getLangOpts().CPlusPlus20 || isa<CXXDeductionGuideDecl>(FD1) ||
- isa<CXXDeductionGuideDecl>(FD2))
+ if (!Context.getLangOpts().CPlusPlus20)
return nullptr;
// Match GCC on not implementing [temp.func.order]p6.2.1.
--- /dev/null
+// RUN: %clang_cc1 -std=c++20 -verify %s
+// expected-no-diagnostics
+
+namespace pr58456 {
+ template<typename>
+ struct s {
+ constexpr s(auto) {
+ }
+ };
+
+ template<typename T>
+ s(T) -> s<int>;
+
+ template<typename T> requires true
+ s(T) -> s<int>;
+
+ void f() {
+ auto const y = s(0);
+ }
+}