: 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
. The implementation
is free to optimize away aliasing checks which might be needed if the argument was
an lvalue
. —
end note