[PATCH] D28467: [Sema] Add warning for unused lambda captures

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 13 06:19:55 PST 2017

aaron.ballman added inline comments.

Comment at: test/SemaCXX/warn-unused-lambda-capture.cpp:86
+  auto explicit_by_value_unused_sizeof = [i] { return sizeof(i); }; // expected-warning{{lambda capture 'i' is not required to be captured for use in an unevaluated context}}
+  auto explicit_by_value_unused_decltype = [i] { decltype(i) j = 0; }; // expected-warning{{lambda capture 'i' is not used}}
malcolm.parsons wrote:
> aaron.ballman wrote:
> > malcolm.parsons wrote:
> > > I don't know why the unevaluated context warning didn't work here.
> > Hmm, it should have, come to think of it. I don't think that's an odr-use (when I get near a standard, I'll double-check), and it is unevaluated. Worth poking at.
> The unevaluated context warning worked on line 38 where it's not in a template and on line 85 where it's `sizeof` instead of `decltype`.
> Somehow the template instantiation is avoiding some work when the capture doesn't have a dependent type.
That might make some degree of sense. Btw, I did double check, and it's definitely not an odr-use.

I think this edge case can be handled in a follow-up patch if you want to get the primary work in. If you'd prefer to have it fixed for the initial commit, that's obviously fine too.


More information about the cfe-commits mailing list