戻り値の最適化に加えて右辺値参照の出現により、このようなコア関数を実装する最も効率的な方法は何でしょうか? この実装を改善するにはどうすればよいですか、それともそのままにしておくべきですか?
template <typename T>
string
to_string(const T& t)
{
stringstream ss;
ss << t;
return ss.str();
}
明らかに、可能であれば、メモリのコピーまたは割り当てを避けたいと考えています。ティア。
編集:その詳細な回答については、D.ロドリゲスに感謝します。さて、私の質問の 2 番目の部分があります。これを改善する方法はありますか?
#define to_cstr( T ) (to_string( T ).c_str())
もちろん、できれば MACRO は避けたいのですが、上記のテンプレート コードをコピー アンド ペーストして ss.str().c_str() と const char* を返すと、一時的なものは十分長くは生きられません。コードは実行されているように見えますが、valgrind は文句を言います (赤信号)。
上記の to_cstr() の MACRO よりもクリーンなソリューションを思いつくことができませんでした。改善する方法はありますか、それとも放っておくべきですか?
- ケン