【问题标题】:Please explain constexpr [duplicate]请解释 constexpr [重复]
【发布时间】: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 吗?

【问题讨论】:

标签: c++ c++11 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<'
猜你喜欢
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2019-09-18
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多