Рассмотрим следующий пример:
#include <sstream>
template <typename T>
inline std::string to_string(T const & op) {
std::ostringstream result;
result << op;
return result.str();
}
Если бы я должен был вернуть результат, вместо result.str() он автоматически стал rvalue. Не так строка, содержащаяся в результате (я предполагаю). Мое предположение состоит в том, что оно копируется и копия возвращается как rvalue.
Итак, мой вопрос здесь, законно ли:
return std::move(result.str());
Я бы предположил, что это так, ожидая, что поток останется с допустимой пустой строкой. Но я не чувствую себя достаточно уверенно, чтобы на самом деле это сделать.