C++ 无法从括号内的初始值设定项列表转换为std::vector

C++ 无法从括号内的初始值设定项列表转换为std::vector,c++,c++11,gcc,C++,C++11,Gcc,我看到很多类似的问题,但我认为我看到的不是完全相同的问题。这很基本。我的讲师提供的一些代码无法编译,我将问题归结到这个测试用例中: void foo(vector<int> v) { } void fooUsage() { foo({0, 1, 2}); } void foo(向量v){ } void footusage(){ foo({0,1,2}); } 这在以下情况下失败: 无法将“{0,1,2}”从“”转换为“std::vector” 注意:它在GCC 5.0.

我看到很多类似的问题,但我认为我看到的不是完全相同的问题。这很基本。我的讲师提供的一些代码无法编译,我将问题归结到这个测试用例中:

void foo(vector<int> v) {
}

void fooUsage() {
    foo({0, 1, 2});
}
void foo(向量v){
}
void footusage(){
foo({0,1,2});
}
这在以下情况下失败:

无法将“{0,1,2}”从“”转换为“std::vector”

注意:它在GCC 5.0.0 20141228上工作,但在我的GCC 4.7.1(tdm-1)上失败


抱歉,如果这太基本了,但我对C++11不太了解。

这是一个。

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

注意:我错误地认为这在默认情况下是打开的,因为我也收到了如下警告:

扩展初始值设定项列表仅适用于-std=c++11或-std=gnu++11[默认启用]


看看它怎么说“默认启用”?这就是误导我的原因。

嗯。。。在那个版本中缺少编译器支持,或者是bug?我相信GCC4.7.1对c++11这样的功能的支持是不完整的。即使我的g++/GCC版本是5.4.0,我也必须添加这个标志。我猜他们做了些什么,必须再加一面旗子!