相关疑难解决方法(0)

为什么从NRVO中排除了按值参数?

想像:

S f(S a) {
  return a;
}
Run Code Online (Sandbox Code Playgroud)

为什么不允许别名a和返回值槽?

S s = f(t);
S s = t; // can't generally transform it to this :(
Run Code Online (Sandbox Code Playgroud)

如果复制构造函数S具有副作用,则规范不允许此转换.相反,它需要至少两个副本(一个来自ta,一个来自a于返回值,另一个是返回值s,且只有最后一个可以省略.请注意,我写了= t上述表示的副本的事实的t到f的a,这仍然是在移动的副作用存在强制性的唯一拷贝/拷贝构造函数).

这是为什么?

c++ return-value-optimization c++11

38
推荐指数
2
解决办法
1626
查看次数

标签 统计

c++ ×1

c++11 ×1

return-value-optimization ×1