diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 14c9ccd8a66..2c7e3a56c04 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -507,7 +507,8 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, if (LangOpts.CPlusPlus14) { Builder.defineMacro("__cpp_binary_literals", "201304L"); Builder.defineMacro("__cpp_digit_separators", "201309L"); - Builder.defineMacro("__cpp_init_captures", "201304L"); // (not latest) + Builder.defineMacro("__cpp_init_captures", + LangOpts.CPlusPlus2a ? "201803L" : "201304L"); Builder.defineMacro("__cpp_generic_lambdas", LangOpts.CPlusPlus2a ? "201707L" : "201304L"); Builder.defineMacro("__cpp_decltype_auto", "201304L"); diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 327447746c3..46d92313827 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -4453,7 +4453,8 @@ Sema::DeduceAutoType(TypeLoc Type, Expr *&Init, QualType &Result, /*.IsPack = */ (bool)Type.getAs<PackExpansionTypeLoc>()}; if (!DependentDeductionDepth && - (Type.getType()->isDependentType() || Init->isTypeDependent())) { + (Type.getType()->isDependentType() || Init->isTypeDependent() || + Init->containsUnexpandedParameterPack())) { Result = SubstituteDeducedTypeTransform(*this, DependentResult).Apply(Type); assert(!Result.isNull() && "substituting DependentTy can't fail"); return DAR_Succeeded; |