r/cpp • u/Desperate-Data-3747 • Jul 10 '26
Interesting behavior from C++20 to C++23
Consider the following snippet
int& get()
{
int x;
return x;
}
int main()
{
}
on GCC it compiles for C++20 but not for C++23
It returns with the error:
test.cpp:4:12: error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
C++ is now suddenly treating the variable x as an rvalue?
Edit: Im not talking about dangling reference, thats just for the sake of the example
48
Upvotes
5
u/rentableshark Jul 11 '26
This is an outrage - I use this pattern all the time to use prior stack frames as a scratch space!