[Clang] constraints partial ordering should work with deduction guide

D128750 incorrectly skips constraints partial ordering for deduction guide.
This patch reverts that part.

Fixes https://github.com/llvm/llvm-project/issues/58456.
This commit is contained in:
Yuanfang Chen 2022-10-18 17:19:58 -07:00
parent 6912ed7b8f
commit 13d6a57cbe
2 changed files with 21 additions and 2 deletions

View File

@ -5243,8 +5243,7 @@ FunctionTemplateDecl *Sema::getMoreSpecializedTemplate(
}
}
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.

View File

@ -0,0 +1,20 @@
// 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);
}
}