相关疑难解决方法(0)

RVO(返回值优化)是否适用于所有对象?

RVO(返回值优化)是否保证适用于C++编译器(特别是GCC)中的所有对象和情境?

如果答案是"否",那么对类/对象进行优化的条件是什么?如何强制或鼓励编译器对特定的返回值执行RVO?

c++ optimization gcc

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

构造函数中的C++通用引用和返回值优化(rvo)

为什么在带有通用引用参数的构造函数的类中不会出现右值优化?

http://coliru.stacked-crooked.com/a/672f10c129fe29a0

#include <iostream>

 template<class ...ArgsIn>
struct C {

  template<class ...Args>
  C(Args&& ... args) {std::cout << "Ctr\n";}        // rvo occurs without &&

  ~C(){std::cout << "Dstr\n";}
};

template<class ...Args> 
auto f(Args ... args) {
    int i = 1;
  return C<>(i, i, i);
}

int main() {
  auto obj = f();
}
Run Code Online (Sandbox Code Playgroud)

输出:

Ctr
Ctr
Dstr
Ctr
Dstr
Dstr
Run Code Online (Sandbox Code Playgroud)

c++ templates rvalue-reference rvo universal-reference

9
推荐指数
1
解决办法
852
查看次数