-Wunused-variable triggers for temporaries with side effects when bound to a reference · Issue #54489 · llvm/llvm-project (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

@cor3ntin

Description

@cor3ntin

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' }

https://godbolt.org/z/zr7dsevoc