从静态 constexpr 初始化向量时的 C++ 未知类型

C++ unknown type when initialise vector from static constexpr

C++ gcc 编译器在编译时给出不清楚的错误:

    #include <iostream>
#include <vector>
using namespace std;

class A
{
  constexpr static int i = 10;
  vector<int>m(i);
};

int main()
{
  return 0;
}

我编译:g++ var_test.cc -o var_test -std=c++0x 结果:

var_test.cc:8:16: error: unknown type name 'i'
vector<int>m(i);

为什么不为人知? C++0x 应该有成员初始化

C++11 确实支持就地非静态成员初始化,但要使用它,您需要 brace-or-equal-initializer,即这些形式之一:

vector<int> m {i};
vector<int> m = vector<int>(i);
vector<int> m = vector<int>{i};

不支持使用括号,因为它看起来太像函数声明了。