标签: c++ copy-elision nrvo
我希望了解NRVO在C ++中的局限性。即使函数T val有抛出的潜力,具有初始命名声明和单返回的函数是否会针对NRVO进行优化并忽略myFunc()?
T val
myFunc()
T myFunc(bool toThrow) { T val; if (toThrow) { throw std::exception(); } // Do other things here. return val; }
答案 0 :(得分:0)
我在C++ Insights和Compiler Explorer上测试了您的代码的几个版本。
简短的回答是,编译器很可能会使用NRVO。