std::tie
- 头文件:
tuple
- 功能:解构 pair 和 tuple 类型数据,可以与 std::ignore 配合使用,解构后变量是解构前数据的引用
- 示例
#include <tuple>
using namespace std;
int main()
{
int a1 = 0, a2 = 0;
auto tp = tie(a1, a2) = pair<int, int>(1, 2);
}
- 源码分析:tie 是一个模板函数,参数是引用类型,返回值一个 tuple 类型,其中存储了引用数据,正因为此,当 tie 函数执行时,返回 tuple 值作为左值,通过调用 tuple 的赋值运算符操作,右值的数据使 tuple 中存储的数据变化,从而使 tie 参数数据变化。(变化的主要原因是 tie 参数和返回值 tuple 中数据都是引用类型)
// FUNCTION TEMPLATE tie
template <class... _Types>
_NODISCARD constexpr tuple<_Types&...> tie(_Types&... _Args) noexcept { // make tuple from elements
using _Ttype = tuple<_Types&...>;
return _Ttype(_Args...);
}