无法使用大括号为 C++ 对赋值
Unable to use curly brackets to assign values to c++ pair
每当我使用花括号为一对赋值时,我都会收到以下错误
error: expected expression
p = {0, 0};
这是代码 -
#include <iostream>
#include <utility>
using namespace std;
int main() {
pair<int, int> p;
p = {0, 0};
return 0;
}
我正在使用 Xcode 附带的 clang 编译器。
我不知道为什么这不起作用,因为它在 ideone 上运行良好
此语法使用 list initialization,特别是该页面上的形式 (10)。由于列表初始化仅在 C++11 中引入,因此您需要使用该版本进行编译。 Clang 默认使用 C++98 构建,因此您需要使用 -std
标志指定更高版本。获得列表初始化的最小值是 -std=c++11
,但你可以使用 -std=c++14
或 -std=c++1z
获得更多特性(这意味着 C++ 的下一个版本,几乎肯定是 C++17 ,在不到两周的时间内标准化)。
我不知道当你选择 C++ 时 ideone 使用什么编译器或标志,但它显然支持 C++11。
每当我使用花括号为一对赋值时,我都会收到以下错误
error: expected expression
p = {0, 0};
这是代码 -
#include <iostream>
#include <utility>
using namespace std;
int main() {
pair<int, int> p;
p = {0, 0};
return 0;
}
我正在使用 Xcode 附带的 clang 编译器。
我不知道为什么这不起作用,因为它在 ideone 上运行良好
此语法使用 list initialization,特别是该页面上的形式 (10)。由于列表初始化仅在 C++11 中引入,因此您需要使用该版本进行编译。 Clang 默认使用 C++98 构建,因此您需要使用 -std
标志指定更高版本。获得列表初始化的最小值是 -std=c++11
,但你可以使用 -std=c++14
或 -std=c++1z
获得更多特性(这意味着 C++ 的下一个版本,几乎肯定是 C++17 ,在不到两周的时间内标准化)。
我不知道当你选择 C++ 时 ideone 使用什么编译器或标志,但它显然支持 C++11。