NRVO是否有效,但异常抛出体内?

时间:2019-07-20 04:36:51

标签: c++ copy-elision nrvo

我希望了解NRVO在C ++中的局限性。即使函数T val有抛出的潜力,具有初始命名声明和单返回的函数是否会针对NRVO进行优化并忽略myFunc()

T myFunc(bool toThrow) {
    T val;

    if (toThrow) {
        throw std::exception();
    }

    // Do other things here.

    return val;
}

1 个答案:

答案 0 :(得分:0)

我在C++ InsightsCompiler Explorer上测试了您的代码的几个版本。

简短的回答是,编译器很可能会使用NRVO。