Tuesday 15 June 2010

c++ - How to tie two tuples? -



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