【发布时间】:2013-05-05 19:27:13
【问题描述】:
我使用的是 g++4.8.0,它不包含早期的 constexpr 错误。因此下面的代码工作fine:
constexpr int size() { return 5; }
int array[size()];
int main () {}
但是,如果我将两个变量都包含在 class 中作为 static,那么它会给出 compiler error:
struct X {
constexpr static int size() { return 5; }
static const int array[size()];
};
int main () {}
这是错误:
错误:数组“array”的大小不是一个整数常量表达式
是否禁止以这种方式使用constexpr 或另一个 g++ 错误?
【问题讨论】:
-
我在浏览标准后没有发现任何不允许的内容。
-
由于成员函数定义可以引用尚未声明的成员,如果这是合法的,你也可以这样做
constexpr static int size() { return sizeof(array)/sizeof(*array) + 1; }...
标签: c++ c++11 compiler-errors g++ constexpr