Sta*_*ked 3 c++ return-value-optimization
我有一个看起来像这样的函数:
// Fetch 1 MB of data
void GetData(std::vector<char> & outData);
Run Code Online (Sandbox Code Playgroud)
1MB是夸大的,但我只是想说明最好避免不必要的副本.
如果我添加这个重载:
std::vector<char> GetData()
{
std::vector<char> result;
GetData(result);
return result;
}
Run Code Online (Sandbox Code Playgroud)
那么RVO有多大可能性呢?
对于最合理的近期编译器(例如,VS 2005或更新版本,gcc 3.4或更新版本),它基本上是肯定的.我只说"最",因为我没有测试现有的每个编译器.我在过去5年左右看过的每一个新编译器都包含了它.