================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits