AaronBallman wrote:

> Another option would be to to not acknowledge zero-sized arrays in the type 
> traits at all, just like vector types: https://godbolt.org/z/aP685vz8q. That 
> may be the most consistent stance on this. Basically "It's non-standard and 
> doesn't fit neatly in any of the standard categories, so it's in no category 
> at all."

That's a possibility, though I wonder if it's actually user-friendly to issue a 
diagnostic if trying to use a non-standard type that can't fit the C++ type 
traits model. It's annoying for folks writing generic code, but so long as the 
diagnostic is SFINAE-able, maybe it's okay? My concern is that either returning 
`true` or `false` from any of those traits may give really surprising results 
to users, whereas a diagnostic makes it clear "you've wandered off the beaten 
path here and you need to think more carefully about what this all means". It's 
not quite as far as the idea of making them invalid types and perhaps is a bad 
idea, but I'm also somewhat okay with the idea of making it harder to use these 
non-standard extensions in highly generic code.

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

Reply via email to