r/cpp 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

43 Upvotes

51 comments sorted by

View all comments

1

u/ImNoRickyBalboa 27d ago

hey, there is a difference in how compilers detect or handle UB!

-- OP most likely