The*_*ask 8 c++ clang constexpr c++11
尝试使用constexpr属性创建结构的成员而不是静态会导致编译器错误(请参阅下文).这是为什么?对于单个常量值,我将在内存中使用此值,直到程序终止而不仅仅是struct的范围?我应该回去使用宏吗?
struct foo
{
constexpr int n = 10;
// ...
};
error: non-static data member cannot be constexpr; did you intend to make it static?
Run Code Online (Sandbox Code Playgroud)
Joh*_*itb 12
我不知道官方理性.但肯定会导致混乱.举个例子,我看不出它对非静态数据成员意味着什么constexpr.你能做到以下几点吗?
struct foo {
constexpr int n = 10;
constexpr foo() { }
constexpr foo(int n):n(n) { } // overwrite value of n
};
Run Code Online (Sandbox Code Playgroud)
或者它是否意味着初始化程序必须始终是常量,即不允许你写上面的内容(因为n它不是常数/可能是非常数)但是允许说
foo f = { 10 };
Run Code Online (Sandbox Code Playgroud)
constexpr int n简单的形式而不是隐含的规则static对我来说似乎很好,因为它的语义不明确IMO.
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |