tai*_*Bsu 2 c++ constexpr c++11
我目前正在研究更多 C++11 的东西,并在constexpr. 在我的一本书中,据说您应该将它用于常量,例如 ? 例如以这种方式:
#include <cmath>
// (...)
constexpr double PI = atan(1) * 4;
Run Code Online (Sandbox Code Playgroud)
现在我想把它放在一个自己的命名空间中,例如。MathC:
// config.h
#include <cmath>
namespace MathC {
constexpr double PI = atan(1) * 4;
// further declarations here
}
Run Code Online (Sandbox Code Playgroud)
...但这里 IntelliSense 说function call must have a constant value in a constant expression。
当我声明PI以下方式时,它有效:
static const double PI = atan(1) * 4;
Run Code Online (Sandbox Code Playgroud)
编译器似乎不喜欢constexpr但static const在这里的实际原因是什么?不constexpr应该在这里也有资格,或者这完全与这里的上下文有关并且constexpr不应该在函数之外声明?
谢谢你。
编译器似乎不喜欢
constexpr但static const在这里的实际原因是什么?
Aconstexpr必须在编译时可评估,static const而不需要。
static const double PI = atan(1) * 4;
Run Code Online (Sandbox Code Playgroud)
只是告诉编译器PI一旦初始化就不能修改,但可以在运行时初始化。
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |