0

当左侧是对数组成员的引用时,结构化绑定的正确语法是什么?

例如,以下程序无法编译:

#include <array>

std::array<int, 2> f()
{
    return { 1, 2 };
}

int main()
{
    std::array<int, 4> a;
    a.fill(3);
    auto [ a[1], a[2] ] = f();
}

给出错误

main.cpp: In function 'int main()':

main.cpp:12:13: error: expected ']' before '[' token

   12 |     auto [ a[1], a[2] ] = f();

如果结构化绑定写为

auto [ std::get<1>(a), std::get<2>(a) ] = f();
4

1 回答 1

2

结构绑定声明变量,

如果要重用现有变量,std::tie则更合适。

auto [ a1, a2 ] = f();
std::tie(a[1], a[2]) = std::tie(a1, a2);
于 2020-05-25T09:43:18.407 回答