здесь http://en.cppreference.com/w/cpp/utility/tuple/tuple_element с учетом возможной реализации std:: tuple_element.
template< std::size_t I, class T >
struct tuple_element;
// recursive case
template< std::size_t I, class Head, class... Tail >
struct tuple_element<I, std::tuple<Head, Tail...>>
: std::tuple_element<I-1, std::tuple<Tail...>> { };
// base case
template< class Head, class... Tail >
struct tuple_element<0, std::tuple<Head, Tail...>> {
typedef Head type;
};
Но для этой реализации требуется глубокая рекурсия, если кортеж имеет множество параметров (более 100 или 200 параметров).
Q1: Почему С++ 11 не был добавлен специальный оператор для получения элементов по индексу? как кортеж [2] или кортеж [0]?
Q2: Возможно ли уменьшение глубинного экземпляра? Например, в языке D более шаблонные алгоритмы (в typetuple) нуждаются в O (log (N)) глубоком экземпляре.
EDIT: Q1: Почему С++ 11 не был добавлен специальный оператор для получения элементов по индексу из вариативных шаблонов? подобный шаблон < class... T > struct index {typedef T [3] third_element;}