随着返回值优化之上的右值引用的出现,实现这样的核心功能的最有效方法是什么?我该如何改进这个实现,或者我应该不理会它?
template <typename T>
string
to_string(const T& t)
{
stringstream ss;
ss << t;
return ss.str();
}
显然,如果可以的话,我想避免复制或分配内存。TIA。
编辑:感谢 D. Rodriguez 提供详细的答案。现在,我的问题有第二部分。有没有办法改善这一点?
#define to_cstr( T ) (to_string( T ).c_str())
当然,如果可以的话,我想避免使用 MACRO,但是如果我复制并粘贴上面的模板代码以返回 ss.str().c_str() 和 const char*,则临时文件的寿命不够长;尽管代码似乎可以运行,但 valgrind 抱怨(红灯)。
对于 to_cstr(),我无法想出比上面的 MACRO 更清洁的解决方案。任何想法如何改进,或者我也应该不理会?
- 肯