Skip to content

Commit 840d4d9

Browse files
authored
[clang] NFCI: don't check deduced constraints when partial ordering (#106882)
1 parent 3bdec31 commit 840d4d9

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed

clang/lib/Sema/SemaTemplateDeduction.cpp

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3313,10 +3313,12 @@ FinishTemplateArgumentDeduction(
33133313
if (Trap.hasErrorOccurred())
33143314
return TemplateDeductionResult::SubstitutionFailure;
33153315

3316-
if (auto Result = CheckDeducedArgumentConstraints(S, Partial, SugaredBuilder,
3317-
CanonicalBuilder, Info);
3318-
Result != TemplateDeductionResult::Success)
3319-
return Result;
3316+
if (!IsPartialOrdering) {
3317+
if (auto Result = CheckDeducedArgumentConstraints(
3318+
S, Partial, SugaredBuilder, CanonicalBuilder, Info);
3319+
Result != TemplateDeductionResult::Success)
3320+
return Result;
3321+
}
33203322

33213323
return TemplateDeductionResult::Success;
33223324
}
@@ -3364,13 +3366,16 @@ static TemplateDeductionResult FinishTemplateArgumentDeduction(
33643366
if (Trap.hasErrorOccurred())
33653367
return TemplateDeductionResult::SubstitutionFailure;
33663368

3367-
if (auto Result = CheckDeducedArgumentConstraints(S, Template, SugaredBuilder,
3368-
CanonicalBuilder, Info);
3369-
Result != TemplateDeductionResult::Success)
3370-
return Result;
3369+
if (!PartialOrdering) {
3370+
if (auto Result = CheckDeducedArgumentConstraints(
3371+
S, Template, SugaredBuilder, CanonicalBuilder, Info);
3372+
Result != TemplateDeductionResult::Success)
3373+
return Result;
3374+
}
33713375

33723376
return TemplateDeductionResult::Success;
33733377
}
3378+
33743379
/// Complete template argument deduction for DeduceTemplateArgumentsFromType.
33753380
/// FIXME: this is mostly duplicated with the above two versions. Deduplicate
33763381
/// the three implementations.
@@ -5595,19 +5600,8 @@ static TemplateDeductionResult FinishTemplateArgumentDeduction(
55955600
TDR != TemplateDeductionResult::Success)
55965601
return TDR;
55975602

5598-
// C++20 [temp.deduct]p5 - Only check constraints when all parameters have
5599-
// been deduced.
5600-
if (!IsIncomplete) {
5601-
if (auto Result = CheckDeducedArgumentConstraints(S, FTD, SugaredBuilder,
5602-
CanonicalBuilder, Info);
5603-
Result != TemplateDeductionResult::Success)
5604-
return Result;
5605-
}
5606-
5607-
if (Trap.hasErrorOccurred())
5608-
return TemplateDeductionResult::SubstitutionFailure;
5609-
5610-
return TemplateDeductionResult::Success;
5603+
return Trap.hasErrorOccurred() ? TemplateDeductionResult::SubstitutionFailure
5604+
: TemplateDeductionResult::Success;
56115605
}
56125606

56135607
/// Determine whether the function template \p FT1 is at least as

0 commit comments

Comments
 (0)