无法使用大括号为 c++ 对赋值

Unable to use curly brackets to assign values to c++ pair

本文关键字:c++ 赋值      更新时间:2023-10-16

每当我使用大括号为一对赋值时,我都会收到以下错误

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 上工作正常

此语法使用列表初始化,特别是该页面上的形式 (10(。由于列表初始化仅在 C++11 中引入,因此您需要使用该版本进行编译。Clang 默认使用 C++98 进行构建,因此您需要使用-std标志指定更高版本。获得列表初始化的最小值是-std=c++11,但您可以通过-std=c++14-std=c++1z获得更多功能(这意味着 C++ 的下一个版本,几乎肯定会是 C++17,在不到两周的时间内标准化(。

我不知道当你选择C++时ideone使用什么编译器或标志,但它显然支持C++11。