aaron.ballman added a comment.

In D143524#4148024 <https://reviews.llvm.org/D143524#4148024>, @v.g.vassilev 
wrote:

> Indeed the warning is noisy but it will potentially fix broken code which 
> were unable to diagnose before. Especially that in some cases where static 
> templates in header files are used as an idiom. In theory this approach can 
> extend to cases described in https://wg21.link/p2691 where our inability to 
> diagnose/fix these cases leads to some design decisions which may not be 
> optimal.

We need to ensure the diagnostic is not so noisy that people disable it, 
though. That means a low false positive rate and a straight-forward way to 
silence the diagnostic on a case-by-case basis.



================
Comment at: clang/test/SemaCXX/warn-func-not-needed.cpp:13
 namespace test1_template {
-template <typename T> static void f() {}
+template <typename T> static void f() {} // expected-warning {{unused function 
template}}
 template <> void f<int>() {} // expected-warning {{function 'f<int>' is not 
needed and will not be emitted}}
----------------
v.g.vassilev wrote:
> aaron.ballman wrote:
> > Why is this unused? `f<long>()` in `foo()` should cause this to be used, 
> > right?
> > 
> > How should a user silence this diagnostic without disabling it entirely?
> Nobody uses `foo`.
Ah, good point on `foo` not being used, but the question still stands -- how 
does the user silence this diagnostic? It's not at all uncommon to have a 
primary template with specializations where the TU only uses either the primary 
or a specialization, but not both (and certainly not all specializations).


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143524/new/

https://reviews.llvm.org/D143524

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

Reply via email to