# Tuple ```cpp #include #include #include #include #include using std::tuple; using std::array; using std::variant; using std::cout; #include "MyData.h" template array...>, sizeof...(Ts)> convert_impl(tuple& in, std::index_sequence) { return {{variant...>(std::in_place_index_t{}, std::ref(std::get(in)))...}}; } template array...>, sizeof...(Ts)> convert(tuple& in) { return convert_impl(in, std::make_index_sequence>>{}); } ``` ``` int main() { tuple, int, double> t{5, 23, 42.0}; for (const auto& i : convert(t)) { std::visit([](auto& i) { cout << "value: " << i << '\n'; ++i.get(); }, i); } cout << "0: " << std::get<0>(t) << '\n'; cout << "1: " << std::get<1>(t) << '\n'; cout << "2: " << std::get<2>(t) << '\n'; return 0; } ```