无法从大括号括起来的初始化列表转换为std :: vector

时间:2015-01-21 19:32:21

标签: c++ c++11 gcc

我看到了很多类似的问题,但我认为我看不到同样的问题。这很基本。我的讲师的一些代码无法编译,我将问题提炼到这个测试用例:

void foo(vector<int> v) {
}

void fooUsage() {
    foo({0, 1, 2});
}

这失败了:

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。

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

事实证明我只需要将-std=c++11添加到gcc命令行。

注意:我错误地认为这是默认开启的,因为我也收到了一些警告:

extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

看看它是如何“默认启用”的?这就是误导我的原因。