A compute(…)
{
A v;
…
return v;
}
如果A
有一个可访问的复制或移动构造函数,编译器可以选择省略该副本。否则,如果A
具有移动构造函数,则移动v
。否则,如果A
具有复制构造函数,则复制v
。否则,将发出编译时错误。
我认为我应该始终返回没有std::move
的值,因为编译器将能够为用户找出最佳选择。但在博客文章中的另一个例子中
Matrix operator+(Matrix&& temp, Matrix&& y)
{ temp += y; return std::move(temp); }
在这里,std::move
是必需的,因为y
必须在函数中作为左值处理。
啊,读完这篇博文,我的头都要炸开了。我尽了最大的努力去理解其中的道理,但是我学习的越多,我就越感到困惑。为什么我们要在std::move
的帮助下返回值
https://stackoverflow.com/questions/13430831
复制相似问题