3

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

T myFunc(bool toThrow) {
    T val;

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

    // Do other things here.

    return val;
}
4

1 回答 1

1

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

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

于 2019-07-21T11:36:54.827 回答