@@ -4829,8 +4829,8 @@ TemplateDeductionResult Sema::DeduceTemplateArguments(
48294829 /* AdjustExceptionSpec*/ false );
48304830
48314831 // Unevaluated SFINAE context.
4832- EnterExpressionEvaluationContext Unevaluated (
4833- *this , Sema::ExpressionEvaluationContext::Unevaluated);
4832+ std::optional< EnterExpressionEvaluationContext> Unevaluated (
4833+ std::in_place, *this , Sema::ExpressionEvaluationContext::Unevaluated);
48344834 SFINAETrap Trap (*this );
48354835
48364836 Deduced.resize (TemplateParams->size ());
@@ -4873,13 +4873,14 @@ TemplateDeductionResult Sema::DeduceTemplateArguments(
48734873 DeduceReturnType (Specialization, Info.getLocation (), false ))
48744874 return TemplateDeductionResult::MiscellaneousDeductionFailure;
48754875
4876+ Unevaluated = std::nullopt ;
48764877 // [C++26][expr.const]/p17
48774878 // An expression or conversion is immediate-escalating if it is not initially
48784879 // in an immediate function context and it is [...]
48794880 // a potentially-evaluated id-expression that denotes an immediate function.
48804881 if (IsAddressOfFunction && getLangOpts ().CPlusPlus20 &&
48814882 Specialization->isImmediateEscalating () &&
4882- parentEvaluationContext ().isPotentiallyEvaluated () &&
4883+ currentEvaluationContext ().isPotentiallyEvaluated () &&
48834884 CheckIfFunctionSpecializationIsImmediate (Specialization,
48844885 Info.getLocation ()))
48854886 return TemplateDeductionResult::MiscellaneousDeductionFailure;
0 commit comments