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