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应该有成员初始化
答案 0 :(得分:3)
C ++ 11确实支持就地非静态成员初始化,但要使用它,你需要一个大括号或等于初始化,即其中一种形式:
vector<int> m {i};
vector<int> m = vector<int>(i);
vector<int> m = vector<int>{i};
不支持使用括号,因为它看起来太像函数声明了。