constexpr 中的构建错误

Building error in constexpr

我在我的应用程序中使用 constexpr,但出现编译错误。

namespace {
   const int kLength = 1;
   const float kPiNumber = 3.14159265;
   constexpr float kCircumferenceArc()
   { return (2*kPiNumber*kLength) / 360; }
}

我得到的错误是:

read of non-constexpr variable 'kPiNumber' is not allowed in a constant expression { return (2*kPiNumber) / 360; }

有人可以帮我解决这个问题吗?

提前致谢

constexpr 变量必须从编译时已知的值进行初始化。一个 const 变量,例如:

const float kPiNumber = 3.14159265;

由于某些历史原因 'const float' 在编译时未知。 要使其工作,您必须将此行更改为:

constexpr float kPiNumber = 3.14159265;

完整代码如下:

namespace {
   const int kLength = 1;
   constexpr float kPiNumber = 3.14159265f;
   constexpr float kCircumferenceArc()
   { return (2*kPiNumber*kLength) / 360; }
}