【发布时间】:2017-07-06 23:54:59
【问题描述】:
在 Mike Isaacson (https://youtu.be/-ctgSbEfRxU?t=2907) 的“探索 C++17 及以后”演讲中,有一个关于写作的问题:
const constexpr ....
vs 单个常量。 Mike 说在 C++11 中 constexpr 意味着 const 而在 C++14 中则没有。 这是真的吗? 我试图找到证明,但我做不到。
我不是在问 const 和 constexpr 之间的区别(与许多其他问题一样),而是关于两个 C++ 标准版本中 constexpr 的区别。
【问题讨论】:
-
在 C++11 中,成员函数上的 constexpr 意味着该成员函数的常量。在 C++14 中已删除此含义。
-
@dyp:我不关注。一个常量成员函数将有
const关键字尾随参数列表,而不是在这个问题之前 (const constexpr)。我错过了什么? -
在Difference between constexpr and const? 的答案中,示例是
constexpr const int* NP = &N;,您需要两者,因为它们会影响声明的不同部分。这在语言版本之间没有改变。 -
@IInspectable 没错,
const constexpr不会影响成员函数的常量。然而,这是我所知道的 C++11 和 C++14 之间关于 constness 的唯一区别。 -
在 C++11 中:第 7.1.5/8 节:“非构造函数的非静态成员函数的 constexpr 说明符声明该成员函数为 const。”在 C++14 中没有这样的声明,