小编Ter*_*e D的帖子

Constexpr因子编译结果在VS2015和GCC 5.4.0中

想知道以下是否让任何人感到惊讶,就像它对我一样?Alex Allain 在这里使用constexpr 的文章显示了以下因子示例:

constexpr factorial (int n)
{
    return n > 0 ? n * factorial( n - 1 ) : 1;
}
Run Code Online (Sandbox Code Playgroud)

并指出:

现在你可以使用factorial(2),当编译器看到它时,它可以优化掉调用并在编译时完全进行计算.

我在VS2015中以释放模式尝试了这一点,并对(/ Ox)进行了全面优化,并逐步查看调试器中查看程序集的代码,并看到在编译时没有进行因子计算.

使用GCC v5.4.0和--std = C++ 14,我必须在编译时执行计算之前使用/ O2或/ O3.我很惊讶,在编译时没有使用/ O计算.

主要问题是:为什么VS2015在编译时没有执行此计算?

c++ gcc constexpr c++11 visual-studio-2015

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

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

gcc ×1

visual-studio-2015 ×1