-Wunused-variable triggers for temporaries with side effects when bound to a reference · Issue #54489 · llvm/llvm-project (original) (raw)
Navigation Menu
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Description
The following code warns on guard2
and guard3
(but not guard) despite all 3 variable having side effects on destruction.
This feels inconsistent and surprising.
GCC emits no warning in any of these cases.
struct RAIIWrapper { RAIIWrapper(); ~RAIIWrapper(); };
void foo() { auto const guard = RAIIWrapper(); auto const& guard2 = RAIIWrapper(); //unused variable 'guard2' auto && guard3 = RAIIWrapper(); //unused variable 'guard3' }