我知道当按值将对象传递给函数时,如果没有复制省略,则始终调用移动构造函数。按值返回对象呢?
例如,假设我们有一个Foo
具有移动构造函数的类,并且我们有一个返回Foo
对象的函数。
Foo g() {
Foo f;
// do something with f
return f;
}
如果我们假设没有 RVO,是否保证调用移动构造函数?
更新:我想我没有清楚地表明我的意图。我只是想知道在最坏的情况下我可以让对象移动而不是复制。RVO 或 NRVO 发生,我很高兴。而且我还应该说移动构造函数和移动赋值没有被删除并且被正确实现。