我看到一旦返回一个本地对象,编译器将采取返回值优化.(RVO,NRVO).
标准祝福RVO的部分接着说,如果满足RVO的条件,但编译器选择不执行复制省略,则返回的对象必须被视为右值.
所以我们只写这样的代码:
Widget makeWidget()
{
Widget w;
…
return w;//never use std::move(w);
}
Run Code Online (Sandbox Code Playgroud)
我从来没有看到有人写这样的代码:
Widget&& makeWidget()
{
Widget w;
…
return std::move(w);
}
Run Code Online (Sandbox Code Playgroud)
我知道返回本地对象的左值引用总是错误的.那么,返回一个本地对象的右值引用也是错误的?
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |