rsmith accepted this revision.
This revision is now accepted and ready to land.
================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:2114
@@ -2113,1 +2113,3 @@
+ EnterExpressionEvaluationContext ConstantEvaluated(SemaRef,
+
Sema::ConstantEvaluated);
ExprResult Value = SemaRef.SubstExpr(D->getDefaultArgument(),
TemplateArgs);
----------------
faisalv wrote:
> Looks reasonable to me - since it is consistent with the other changes I had
> made. But somewhat orthogonal to your fix, I wouldn't mind Richard
> commenting on why constant expression evaluation does not have
> IsPotentiallyEvaluatedContext return false (and avoid adding an entry to
> MaybeODRUse)
> Also, just as SubstituteDefaultTemplateArgument does, Perhaps we should add
> an InstantiatingTemplate on the stack that marks this as a substitution into
> default arguments. It would be nice if we could refactor both into a call to
> the same function (i.e SubstittueDefaultTempalteArgument) - but looking at
> the code for it, that would be a little tricky.
> My 2 cents.
"Potentially evaluated" is a term defined in the standard; it would be
confusing for us to use it to mean something else. Constant expressions *are*
evaluated (typically only during compilation), and they can result in odr-use.
The cases where they don't do so are somewhat specialized.
I don't think we need or want a separate entry on the instantiation stack, as
we're still instantiating pieces of the same entity, with the same
instantiation semantics.
http://reviews.llvm.org/D17576
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits