On Jul 14, 2011, at 5:19 PM, Chandler Carruth wrote:

> On Thu, Jul 14, 2011 at 5:04 PM, Douglas Gregor <[email protected]> wrote:
> IMO, the right approach would be to suppress this warning when the constant 
> value itself was instantiated from something... although that's rather 
> trickier to implement.
> 
> I don't disagree with your premise.... but it does seem much trickier to 
> implement. We don't have the nice type sugar in non-types to indicate that 
> substitution took place. Is it worth adding that for this? Are there other 
> good reasons to add it?

Yes, there are other reasons to add it. For one, it helps us track the 
correlation between instantiation and definition, but it also leads to a more 
sane AST for instantiations that's also consistent with the way we handle 
substitutions of template type and template template parameters. See, for 
example, the FIXME in Sema::BuildExpressionFromIntegralTemplateArgument 
regarding enumeration values.

> (Also, this patch seems a strict improvement, and we can add the refined 
> checking you're mentioning as a second step? I'd like to avoid the false 
> positives we were seeing with the previous incarnation)


Unless I misunderstood the effect, it also eliminates some true positives as 
well, in code like

        if (dependent-thing && 0)

so it's not strictly an improvement. I'm not asking to revert it---the patch 
probably does more good than harm---but I do believe that there is a better 
solution.
        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to