(RVO, Return Value Optimization,返回值优化,或者NRVO,Named Return Value optimization)。
但若在编译的时候不使用该选项的话,读者会发现很多构造和移动都被省略了。对于下面这样的代码,一旦打开g++/clang++的RVO/NRVO,从ReturnValue函数中a变量拷贝/移动构造临时变量,以及从临时变量拷贝/移动构造b的二重奏就通通没有了
A ReturnRvalue() { A a(); return a; }
A b = ReturnRvalue();
No comments yet.