我看到了很多类似的问题,但我认为我没有看到相同的问题.这很基础.我的讲师的一些代码无法编译,我将问题提炼到这个测试用例:
void foo(vector<int> v) {
}
void fooUsage() {
foo({0, 1, 2});
}
Run Code Online (Sandbox Code Playgroud)
这失败了:
could not convert '{0, 1, 2}' from '<brace-enclosed initializer list>' to 'std::vector<int>
注意:它适用于GCC 5.0.0 20141228但在我的GCC 4.7.1(tdm-1)上失败.
对不起,如果这太基础但我不太了解C++ 11.
事实证明我只需要添加-std=c++11到 gcc 命令行即可。
注意:我错误地认为这是默认打开的,因为我也收到了一些这样的警告:
extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
看到它怎么说“默认启用”吗?这就是误导我的原因。