请解释 constexpr [重复]

Posted

技术标签:

【中文标题】请解释 constexpr [重复]【英文标题】:Please explain constexpr [duplicate] 【发布时间】:2013-04-27 08:24:46 【问题描述】:

我有一个包含三个静态常量的类,

static const int NUM_POINTS = 2000;
static const float LAKE_THRESHOLD = 0.3;
static const int NUM_LLOYD_ITERATIONS = 2;

在头文件中。我意识到现在在 C++11 中我必须使用 constexpr 但我不知道如何使用它们。谁能用简单的方式解释一下 constexpr 吗?

【问题讨论】:

见***.com/questions/4748083/… 你为什么使用constexpr 【参考方案1】:

constexpr 可用于将表达式标记为编译时常量。它也扩展到函数,因此任意深度的调用链可以是编译时常量。这允许编译器替换常量值,而不是在运行时不必要地计算它。

见:http://en.cppreference.com/w/cpp/language/constexpr

【讨论】:

好的,现在我在标题中声明了这个:constexpr static float FRACTION_LAVA_FISSURES() return 0.2; 然后在 .cpp 我有这个:if ((!edge.river) && (!edge.d0.water) && (!edge.d1.water) && (edge.d0.elevation > 0.8) && (edge.d1.elevation > 0.8) && (edge.d0.moisture < 0.3) && (edge.d1.moisture < 0.3) && ((float)(rand() / RAND_MAX) < FRACTION_LAVA_FISSURES)) 它说invalid operands of types 'float' and 'float()' to binary 'operator<'

以上是关于请解释 constexpr [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥右值不能分配给 constexpr 引用变量

constexpr 具有未触及的非 constexpr 参数:谁是正确的,clang 还是 gcc?

C ++ constexpr最终虚函数[重复]

constexpr 对不变表达式的好处[重复]

C ++:constexpr对变量暗示隐式const不适用于引用[重复]

如何将constexpr作为函数参数传递c ++ [重复]