@@ -6,35 +6,34 @@ namespace tuple19 {
66
77using meta19::_index;
88
9- template <size_t I, class ... Ts> auto constexpr get (Tuple<Ts...>& tuple) -> decltype(auto ) {
9+ template <size_t I, class ... Ts> constexpr auto get (Tuple<Ts...>& tuple) -> decltype(auto ) {
1010 return tuple.amendAt (_index<I>);
1111}
12- template <size_t I, class ... Ts> auto constexpr get (Tuple<Ts...>&& tuple) -> decltype(auto ) {
12+ template <size_t I, class ... Ts> constexpr auto get (Tuple<Ts...>&& tuple) -> decltype(auto ) {
1313 return std::move (tuple.amendAt (_index<I>));
1414}
15- template <size_t I, class ... Ts> auto constexpr get (const Tuple<Ts...>& tuple) -> decltype(auto ) {
15+ template <size_t I, class ... Ts> constexpr auto get (const Tuple<Ts...>& tuple) -> decltype(auto ) {
1616 return tuple.at (_index<I>);
1717}
18- template <class T , class ... Ts> auto constexpr get (Tuple<Ts...>& tuple, Type<T>* = {}) -> decltype(auto ) {
18+ template <class T , class ... Ts> constexpr auto get (Tuple<Ts...>& tuple, Type<T>* = {}) -> decltype(auto ) {
1919 return tuple.amendOf (type<T>);
2020}
21- template <class T , class ... Ts> auto constexpr get (Tuple<Ts...>&& tuple, Type<T>* = {}) -> decltype(auto ) {
21+ template <class T , class ... Ts> constexpr auto get (Tuple<Ts...>&& tuple, Type<T>* = {}) -> decltype(auto ) {
2222 return std::move (tuple.amendOf (type<T>));
2323}
24- template <class T , class ... Ts> auto constexpr get (const Tuple<Ts...>& tuple, Type<T>* = {}) -> decltype(auto ) {
24+ template <class T , class ... Ts> constexpr auto get (const Tuple<Ts...>& tuple, Type<T>* = {}) -> decltype(auto ) {
2525 return tuple.of (type<T>);
2626}
2727
2828} // namespace tuple19
2929
3030// / for c++17 structured bindings support
31- namespace std {
32-
33- template <class ... Ts> class tuple_size <tuple19::Tuple<Ts...>> : public std::integral_constant<size_t , sizeof ...(Ts)> {};
31+ template <class ... Ts> class std ::tuple_size<tuple19::Tuple<Ts...>> {
32+ public:
33+ static constexpr auto value = sizeof ...(Ts);
34+ };
3435
35- template <size_t I, class ... Ts> class tuple_element <I, tuple19::Tuple<Ts...>> {
36+ template <size_t I, class ... Ts> class std :: tuple_element<I, tuple19::Tuple<Ts...>> {
3637public:
3738 using type = typename tuple19::Tuple<Ts...>::template At<I>;
3839};
39-
40- } // namespace std
0 commit comments