================ @@ -12163,6 +12163,23 @@ bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, } } + // C++11 [dcl.constexpr]p1: An explicit specialization of a constexpr + // function can differ from the template declaration with respect to + // the constexpr specifier. + if (IsMemberSpecialization) { + FunctionDecl *InstantiationFunction = + OldDecl ? OldDecl->getAsFunction() : nullptr; + if (InstantiationFunction && + InstantiationFunction->getTemplateSpecializationKind() == + TSK_ImplicitInstantiation && ---------------- vikramRH wrote:
The old decl here is the member method of the classTemplateSpecializationDecl (implict instantiation of the template). would it be correct to mutate if old decl was any other kind (like explicit specialization decl) ? also I guess we cannot have a scenario where an old decl would directly be the primary template (i.e TemplateDecl) ? https://github.com/llvm/llvm-project/pull/145272 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits