malcolm.parsons added inline comments.
================ Comment at: test/SemaCXX/warn-unused-lambda-capture.cpp:26 + auto explicit_initialized_value_used = [j = 1] { return j + 1; }; + auto explicit_initialized_value_unused = [j = 1] {}; // expected-warning{{lambda capture 'j' is not used}} + ---------------- aaron.ballman wrote: > malcolm.parsons wrote: > > Quuxplusone wrote: > > > Would this still produce a diagnostic if `decltype(j)` were something > > > complicated like `lock_guard` or `string`? Presumably it should do the > > > same thing, more or less, as the other -Wunused diagnostics, which I > > > think is "don't warn if the constructor/destructor might actually do > > > important work". > > I was planning to check for that; thanks for the reminder. > One more complex case: > ``` > #include <typeinfo> > > struct B { > virtual ~B() = default; > }; > > struct D : B {}; > > struct C { > B& get_d() const; > C get_c() const; > }; > > void f() { > C c1, c2; > [c1, c2] { > (void)typeid(c1.get_d()); > (void)typeid(c2.get_c()); > }(); > } > ``` > Hopefully this does not diagnose `c1` as being unused but still diagnoses > `c2` as unused. These tests are run with `-nostdsysteminc`, so I ran it manually: ``` aaron.cpp:17:21: warning: expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Wpotentially-evaluated-expression] (void)typeid(c1.get_d()); ^ aaron.cpp:16:8: warning: lambda capture 'c2' is not required to be captured for use in an unevaluated context [-Wunused-lambda-capture] [c1, c2] { ^ 2 warnings generated. ``` https://reviews.llvm.org/D28467 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits