如何使用结构化绑定来设置数组的值?

How can I use structured bindings to set an array's values?

我是 C++17 的新手,当我尝试使用结构绑定为几个数组单元格设置值时,我 运行 遇到了问题。但是常规语法在这里不起作用;它会与数组的括号混淆。

我该如何解决?有可能吗?

示例:

std::pair<int, int> makePair() {
    return { 10, 20 };
}

int main() {
    int arr[20];

    // error here
    auto [arr[0], arr[1]] = makePair();
}

这是错误的工具。结构化绑定总是引入 new 名称;他们不接受左值的任意表达式。

但是即使在 C++11 中你也可以做你想做的事。 std::tie,正是为了这个目的:

std::tie(arr[0], arr[1]) = makePair();

给它一堆参数的左值,它会产生一个对它们的引用的元组。 std::tuplestd::pair 交互(被视为二元组),成员赋值会修改您命名的数组元素。