#ifndef SPROUT_INDEX_TUPLE_TUPLE_HPP #define SPROUT_INDEX_TUPLE_TUPLE_HPP #include #include #include #include #include #include namespace std { #if defined(__clang__) # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wmismatched-tags" #endif // // tuple_size // template struct tuple_size > : public std::integral_constant {}; // // tuple_element // template struct tuple_element > { static_assert(I < sizeof...(Is), "tuple_element<>: index out of range"); public: typedef T type; }; // // tuple_size // template struct tuple_size > : public std::tuple_size > {}; // // tuple_element // template struct tuple_element > : public std::tuple_element > {}; // // tuple_size // template struct tuple_size > : public std::tuple_size > {}; // // tuple_element // template struct tuple_element > : public std::tuple_element > {}; #if defined(__clang__) # pragma clang diagnostic pop #endif } // namespace std #endif // #ifndef SPROUT_INDEX_TUPLE_TUPLE_HPP