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 function return is non-constant
n
是get_value
函数的本地 变量。 IE。 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 扩展 constexpr
放宽了这些要求,但 MSVC 没有实现它。
关于c++ - 为什么我不能增加简单 constexpr 函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674725/