@@ -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