[PATCH] D143524: Make the -Wunused-template default.

Vassil Vassilev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 28 13:08:01 PST 2023


v.g.vassilev planned changes to this revision.
v.g.vassilev added inline comments.


================
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}}
----------------
ldionne wrote:
> aaron.ballman wrote:
> > v.g.vassilev wrote:
> > > aaron.ballman wrote:
> > > > 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).
> > > @philnik used `[[maybe_unused]]` which seemed reasonable to me for silencing the diagnostic. Maybe take a look at the changes done here: https://reviews.llvm.org/D144667
> > That's reasonable if the interface is one the user controls, such as one within a .cpp file. But the situation I'm worried about is where the primary template and specializations live in a header file that's shared between multiple TUs. I don't think it's reasonable to expect users to put `[[maybe_unused]]` on the primary template and all specializations in that situation.
> Don't y'all find it weird to have to use `[[maybe_unused]]` on something that is only a declaration like those CTAD guides? And I agree with @aaron.ballman here: we provide headers that are used in various TUs, and we obviously never expect that the entirety of our headers is going to be used by every single TU.
> 
> In other words, we totally expect that those deduction guides will be unused in some cases, since it's entirely fine for a user not to use them but for us to still provide them. If I understood this correctly, this seems like a flaw in the warning that we should fix in Clang.
Yes, I agree I am pretty sure we can fix the CTAD guides. I just need a few spare cycles...


Repository:
  rC Clang

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

https://reviews.llvm.org/D143524



More information about the cfe-commits mailing list