无法从大括号括起来的初始值设定项列表转换为 std::vector
Could not convert from brace-enclosed initializer list to std::vector
我看到了很多类似的问题,但我认为我看到的不是完全相同的问题。这是非常基本的。我讲师的一些代码无法编译,我将问题提炼到这个测试用例中:
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。
原来我只需要在gcc命令行中加上-std=c++11
就可以了
注意:我误以为这是默认打开的,因为我也收到了一些这样的警告:
extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
看看它是怎么说的 "enabled by default"?这就是误导我的原因。
我看到了很多类似的问题,但我认为我看到的不是完全相同的问题。这是非常基本的。我讲师的一些代码无法编译,我将问题提炼到这个测试用例中:
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。
原来我只需要在gcc命令行中加上-std=c++11
就可以了
注意:我误以为这是默认打开的,因为我也收到了一些这样的警告:
extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
看看它是怎么说的 "enabled by default"?这就是误导我的原因。