为什么我不能递增简单constexpr函数的参数?

安德烈·布什曼

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函数的第二个变体是错误的?

TC

第二个在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么简单的MVC教程未调用我的javascript函数?为什么我也不能调试?

为什么我不能将 require 函数的参数用作变量

为什么我的函数不能使用参数?

为什么我不能constexpr绑定?

为什么我的函数递增加 2?

为什么我不能在C ++ 11中使用constexpr指针作为模板参数?

为什么我不能在constexpr lambda函数中使用std :: tuple

为什么我不能调用我的函数?

为什么我的constexpr对象不在函数内的constexpr?

为什么我不能使用onclick事件执行此简单的JavaScript函数?

为什么不能将析构函数标记为constexpr?

为什么我不能覆盖的外部函数的参数的值,如果我使用该变量在if语句?

为什么我不能将数字模板参数传递给我的模板函数?

为什么我不能调用子函数?

为什么我不能这样编写函数?

为什么不能内联我的模板函数

为什么我的简单 for 循环不能如我所愿?

为什么我使用简单的哈希函数出现非法参数错误?

为什么main不能是constexpr?

为什么我不能在类中使用参数构造函数?

为参数的构造函数使用的Mockito为什么我们不能创造间谍

为什么我们不能使用。作为带有%>%的匿名函数中的参数

为什么我不能将 std::make_unique<S> 作为函数参数传递?

为什么我不能传递引用作为std :: async的函数参数

为什么我不能使用参数调用基本构造函数方法?

为什么我不能在settimeout / setinterval中多次调用带有参数的函数

为什么我不能为此函数推导出模板参数?

为什么我们不能在数组函数参数中省略数组破坏的括号?

为什么我不能将参数传递给addEventListener内的匿名函数,如何解决?