@@ -36,36 +36,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
36
37
37
namespace mkn ::kul {
38
38
39
- template <std::size_t Is, typename Tuple>
40
- struct Element {
41
- using C = std::tuple_element_t <Is, Tuple>;
42
- using T = typename C::value_type; // const containers do not have const value_types
43
- using value_type = std::conditional_t <std::is_const_v<C>, T const &, T&>;
44
- };
45
-
46
- template <typename Tuple, std::size_t ... Is>
47
- constexpr auto tuple_element_value_type_refs_ (Tuple, std::index_sequence<Is...> const &&)
48
- -> std::tuple<typename Element<Is, Tuple>::value_type...>;
49
-
50
- template <typename ... Args>
51
- auto constexpr tuple_element_value_type_refs ()
52
- -> decltype(tuple_element_value_type_refs_(std::tuple<Args...>{},
53
- std::make_index_sequence<sizeof ...(Args)>{}));
54
-
55
39
template <typename Tuple, std::size_t ... Is>
56
- constexpr auto get_tuple_element_value_type_refs_ (Tuple& tup, std::size_t index,
40
+ constexpr auto _tuple_element_value_type_refs_ (Tuple& tup, std::size_t index,
57
41
std::index_sequence<Is...> const &&) {
58
42
return std::forward_as_tuple (std::get<Is>(tup)[index ]...);
59
43
}
60
44
template <typename Tuple>
61
- auto constexpr get_tuple_element_value_type_refs (Tuple& tuple, std::size_t index) {
62
- return get_tuple_element_value_type_refs_ (tuple, index ,
45
+ auto constexpr _tuple_element_value_type_refs (Tuple& tuple, std::size_t index) {
46
+ return _tuple_element_value_type_refs_ (tuple, index ,
63
47
std::make_index_sequence<std::tuple_size_v<Tuple>>{});
64
48
}
65
49
66
50
template <typename ... Args>
67
51
struct Zipit {
68
- auto operator *() { return get_tuple_element_value_type_refs (args, idx); }
52
+ auto operator *() { return _tuple_element_value_type_refs (args, idx); }
69
53
bool operator ==(Zipit const & that) const { return idx == that.idx ; }
70
54
bool operator !=(Zipit const & that) const { return !(*(this ) == that); }
71
55
auto & operator ++() {
0 commit comments