#include <sstream>
#include <string>
using namespace std;
template<typename T>
string ToString(const T& obj)
{
ostringstream oss;
oss << obj;
//
// oss will never be used again, so I should
// MOVE its underlying string.
//
// However, below will COPY, rather than MOVE,
// oss' underlying string object!
//
return oss.str();
}
Jak przenieść ukryty obiekt łańcucha std :: ostringstream?Jak przenieść ukryty obiekt łańcucha std :: ostringstream?
Myślę, że można to zrobić przez 's = ruch (oss.rdbuf() -> Str())' [Och, sprawdziłem, ** nie można **], ale ryzykujesz złamanie założeń kodu strumienia przez wyciągnięcie dywanu spod jego stóp. *. Dlaczego tego chcesz? –
Myślę, że możesz wymyślić coś interesującego za pomocą 'uchwyt węzła' z C++ 17: http://en.cppreference.com/w/cpp/container/node_handle – alexeykuzmin0
To nie jest możliwe, nie ma obowiązku, że' std :: basic_stringbuf' używa 'std :: basic_string' jako bazowego bufora (mimo, że tak to robi się w praktyce). – user657267