If a program casts
an lvalue to an xvalue while passing that lvalue to a library function (e.g. by calling the function
with the argument std::move(x)
), the program
is effectively asking that function to treat that lvalue as a temporary object.
is free to optimize away aliasing checks which might be needed if the argument was
— end note