相关疑难解决方法(0)

移动或命名返回值优化(NRVO)?

可以说我们有以下代码:

std::vector<int> f()
{
  std::vector<int> y;
  ...
  return y;
} 

std::vector<int> x = ...
x = f();
Run Code Online (Sandbox Code Playgroud)

看来编译器有两种方法:

(a)NRVO:Destruct x,然后构造f()代替x.
(b)移动:在temp空间中构造f(),将f()移动到x,destruct f().

根据标准,编译器是否可以自由使用这两种方法?

c++ optimization move-semantics return-value-optimization c++11

32
推荐指数
1
解决办法
2万
查看次数