С появлением ссылок на rvalue в верхней части Оптимизации возвращаемого значения, что будет наиболее эффективным способом реализации такой основной функции? Как я могу улучшить эту реализацию или я должен оставить ее в покое?
template <typename T>
string
to_string(const T& t)
{
stringstream ss;
ss << t;
return ss.str();
}
Очевидно, я хочу избежать копирования или выделения памяти, если смогу.
ТИА.
Редактировать: Спасибо Д. Родригесу за этот подробный ответ. Теперь у меня есть вторая часть моего вопроса. Есть ли способ улучшить это?
#define to_cstr( T ) (to_string( T ).c_str())
Конечно, я хотел бы избежать MACRO, если смогу, но если я скопирую и вставлю приведенный выше код шаблона, чтобы вернуть ss.str (). C_str () и const char *, временное хранилище не будет работать достаточно долго; хотя кажется, что код работает, valgrind жалуется (красный свет).
Я не смог придумать более чистого решения, чем MACRO выше для to_cstr (). Любые идеи, как улучшить, или я тоже должен оставить в покое?