C++: A prvalue is not a temporary