c++ - How to tie two tuples? -
how tie 2 tuples? example
std::tuple<int, char> a; std::tuple<double> b;
is possible write function my_tie(a, b)
returns std::tuple<int&, char&, double&>
after
my_tie(a, b) = make_tuple(1, 'a', 3.14);
a == std::tuple<int, char>{1, 'a'}
, b == std::tuple<double>{3.14}
. is, my_tie
function (different std::tie) first unties tuples , ties elements together.
(updated dec 29, 2014 utilize std::index_sequence_for
)
here's solution uses c++14's index sequences:
#include <tuple> #include <utility> template <class... t1, class... t2, std::size_t... i, std::size_t... j> auto tie_helper(std::tuple<t1...>& t1, std::tuple<t2...>& t2, std::index_sequence<i...>, std::index_sequence<j...>) { homecoming std::tuple<t1&..., t2&...> {std::get<i>(t1)..., std::get<j>(t2)...}; } template <class... t1, class... t2> auto tie(std::tuple<t1...>& t1, std::tuple<t2...>& t2) { typedef std::index_sequence_for<t1...> s1; typedef std::index_sequence_for<t2...> s2; homecoming tie_helper(t1, t2, s1{}, s2{}); }
c++ c++11 tuples
No comments:
Post a Comment