template<class T> struct tuple_size;
template<class. Types>
struct tuple_size<tuple<Types..> : integral_constant<size_t, sizeof.(Types)> { };
template<size_t I, class. Types>
struct tuple_element<I, tuple<Types..> {
using type = TI;
};
template<class T> struct tuple_size<const T>;
template<size_t I, class T> struct tuple_element<I, const T>;