diff options
Diffstat (limited to 'lib/Sema/SemaExprCXX.cpp')
| -rw-r--r-- | lib/Sema/SemaExprCXX.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 3e2a2de5b406..a92b7ac472e7 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -5705,6 +5705,16 @@ ExprResult Sema::BuildCXXMemberCallExpr(Expr *E, NamedDecl *FoundDecl,  ExprResult Sema::BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand,                                        SourceLocation RParen) { +  // If the operand is an unresolved lookup expression, the expression is ill- +  // formed per [over.over]p1, because overloaded function names cannot be used +  // without arguments except in explicit contexts. +  ExprResult R = CheckPlaceholderExpr(Operand); +  if (R.isInvalid()) +    return R; + +  // The operand may have been modified when checking the placeholder type. +  Operand = R.get(); +    if (ActiveTemplateInstantiations.empty() &&        Operand->HasSideEffects(Context, false)) {      // The expression operand for noexcept is in an unevaluated expression | 
