Visual Studio 2015更新3。
我读了《编程》。Bjarne Stroustrup的《使用C ++的原理和实践》(第二版)。我学习constexpr
功能...
有用:
constexpr int get_value(int n) {
return n + 1;
}
但是我不能编译它(代替第一个变体):
constexpr int get_value(int n) {
return ++n;
}
我得到了错误:
constexpr函数返回的值不是恒定的
该n
是本地的变量get_value
函数。即n
变量更改不会影响外部代码。
为什么该get_value
函数的第二个变体是错误的?
第二个在C ++ 11中是不允许的constexpr
。该标准甚至有一个非常相似的示例(N3337 [dcl.constexpr] / 3):
constexpr int prev(int x)
{ return --x; } // error: use of decrement
N3337 [expr.const] / 2明确禁止常量表达式中的“递增或递减运算”。
C ++ 14 Extendedconstexpr
放宽了这些要求,但MSVC并未实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句