rsmith added a comment.

In the past, we've been resistant to adding more fine-grained compat warnings, 
because we don't want to encourage subsetting the language (which sounds like 
exactly what you're trying to do here). We generally don't think it's Clang's 
business to enforce coding style conventions (such as "don't use CTAD because 
it makes your code less readable"), but we do consider it to be in-scope for 
Clang to warn on constructs that are error-prone or that have a negative impact 
on portability or compatibility, and so on. On that basis, I think there is a 
case to be made for warning on this specific language feature, because using 
CTAD on class templates that weren't designed for it is dangerous and creates 
source compatibility problems for future changes to that library.

However, if we consider the goal to be to warn only on using CTAD in places 
where the class template author didn't design for it, then:

- this should be a separate warning, not a subgroup of `-Wc++14-compat`
- the warning should be suppressed by any explicitly-declared deduction guides 
for the class
- there should be some fairly obvious way to suppress the warning in the case 
where the deduction guides implied by the constructors already do the right 
thing (maybe an attribute?)

What do you think? Would that cover the use case you're trying to address here, 
or are you really trying to enforce a style rule of "don't use CTAD ever"?


Repository:
  rC Clang

https://reviews.llvm.org/D54565



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to