【发布时间】:2015-04-12 19:20:30
【问题描述】:
我的 foo 类需要一个静态 C++ array 作为我最终以这种方式声明的私有成员:
class Foo : public Bar {
private:
constexpr static array<int, 18> rouges = {1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36};
// ...
}
但编译器会抛出
error: array must be initialized with a brace-enclosed initializer
error: too many initializers for 'const std::array<int, 18u>'
有趣的是,我的数组大小正好是 18 个元素,如果我声明它array<int, 500>,我仍然会收到too many initializers 错误。至于大括号括起来的初始化程序错误,我不明白编译器期望读取什么。
我通过查看 Stroustrup 的 C++ 之旅 (11.3.1 array) 记录了自己,但我看不出他的做法与我有何不同。或者,删除 constexpr static 关键字并不能消除错误。
感谢您的洞察力。
【问题讨论】:
-
你用的是什么编译器? I'm not getting any errors.
-
带有 C++11 标志的 Mingw。