如何将两个元组连接起来?例如:
std::tuple<int, char> a;
std::tuple<double> b;
能否编写一个函数my_tie(a, b)
,返回std::tuple<int&, char&, double&>
类型的结果,以便在执行以下代码后:
my_tie(a, b) = make_tuple(1, 'a', 3.14);
a == std::tuple<int, char>{1, 'a'}
和b == std::tuple<double>{3.14}
。也就是说,my_tie
函数(与std::tie不同)首先解开元组,然后将所有元素绑定在一起。
tie<decltype(a), decltype(b)>(a, b)
的用途是什么? - user657267std::tie
将类型展平是有原因的:这样使用更容易,而且不会降低其通用性。 - Deduplicatortie
会将tuple
扁平化(实际上它不会,参见 http://coliru.stacked-crooked.com/a/1e985b7792db0c5a),还是你*希望*它将它们扁平化。 - Praetorian