Con*_*tor 13 c++ return-value move-semantics ref-qualifier c++17
在下面的C++ 11 +代码中,返回语句构造应该是首选吗?
#include <utility>
struct Bar
{
};
struct Foo
{
Bar bar;
Bar get() &&
{
return std::move(bar); // 1
return bar; // 2
}
};
Run Code Online (Sandbox Code Playgroud)
Sto*_*ica 19
好吧,因为它是一个r值ref ref合格的成员函数,this大概即将到期.所以搬出bar去是有意义的,假设Bar实际上从移动中获得了某些东西.
由于bar是成员,而不是本地对象/函数参数,因此返回语句中复制省略的通常标准不适用.它会一直复制,除非你明确std::move它.
所以我的答案是选择第一个选项.
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |