mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 06:10:12 +00:00
[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:
parent
6912ed7b8f
commit
13d6a57cbe
@ -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.
|
||||
|
20
clang/test/SemaTemplate/deduction-guide-partial-ordering.cpp
Normal file
20
clang/test/SemaTemplate/deduction-guide-partial-ordering.cpp
Normal 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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user