erichkeane wrote:

> > I don't think this is a good idea, warning on EVERY use of this is 
> > incorrect in system headers. IT is going to result in a ton of 
> > we-want-to-be-suppressed-positives
> 
> Thanks @erichkeane. I think I fundamentally disagree with this. The entire 
> intention of this attribute is to flag such a thing -- it's no different from 
> calling `std::invoke(foo, x)` and expecting to get a diagnostic on _every_ 
> invocation when the function is `void foo(int x, int y)`, especially when you 
> consider that these are basically simulating named-parameters. Do you have a 
> plausible use case in mind that makes you believe people would actually want 
> to suppress the warning in system headers?

Hmm... I just spent a while looking at the attribute more and changed how I was 
thinking about this problem, and I'm less confident in my above statement.  
SINCE this is competely opt-in we could presumably document this better to mean 
"we mean this even if it is in the nitty-gritty of the standard library".  
Typically these sorts of attributes don't really mean that/are intended for use 
in violations by the 'users' code.  Of course, `construct-at` and `invoke`/etc 
all make this somewhat more complicated of a differentiation.

My biggest 'plausible' concern is cases where the system header needs to make 
irrelevant/unused temporaries for the purposes of various operations along the 
way, which still DO the right thing but are wrong along the way.  BUT I also 
wonder how much sympathy I have for those cases when the author of the type has 
opted into this.

https://github.com/llvm/llvm-project/pull/141133
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to