Bootstrap

C++17 之 "结构绑定"

结构绑定 (Structured Binding) 位于ISO/IEC14882:2017 11.5 节.
结构绑定的作用是方便从其它数据结构中提取数据, 如 pair, tuple, 数组等.
通过结构绑定, 可以替代 c++17 之前的 std::tie, 并且使用更加方便.

声明

通用的声明方式为

auto [v1, v2, ...., vn] = a_structure;

其中:

  • auto 后可以有 cv 限定符, 且可以为引用甚至若值引用, 如
    auto, auto const, auto &, auto&&{.cpp}.

  • a_structure 可以是 pair, tuple, 数组, 结构或类. 若为结构或类时,
    绑定的成员必须位于同一个结构或类中, 即不能部分位于父类部分部分子类,
    且绑定的成员存取权限必须是公共的.

  • a_structure 也可以是通过调用函数返回的 pair, tuple 等.

例子

绑定 pair, tuple

例 1

// 假如有一个函数
;