std::tuple_element (3) Linux Manual Page
std::tuple_element<std::tuple> – std::tuple_element<std::tuple>
Synopsis
Defined in header<tuple>
template <std::size_t I, class T>
(1)(since C++ 11)
class tuple_element; /* undefined */
template <std::size_t I, class... Types>
(2)(since C++ 11)
class tuple_element<I, tuple<Types...>>;
Defined in header<tuple>
Defined in header<array>(since C++ 17)
Defined in header<utility>(since C++ 17)
Defined in header<ranges>(since C++ 20)
Defined in header<span>(since C++ 20)
template <std::size_t I, class T>
class tuple_element<I, const T>
{
typedef typename(3)(since C++ 11)
std::add_const<typename std::tuple_element<I, T>::type>::type type;
};
template <std::size_t I, class T>
class tuple_element<I, volatile T>
{
typedef typename(4)(since C++ 11)
std::add_volatile<typename std::tuple_element<I, T>::type>::type type;
};
template <std::size_t I, class T>
class tuple_element<I, const volatile T>
{
typedef typename(5)(since C++ 11)
std::add_cv<typename std::tuple_element<I, T>::type>::type type;
};
Provides compile-time indexed access to the types of the elements of the tuple.
Member types
Member type Definition
type the type of Ith element of the tuple, where I is in [0, sizeof…(Types))
Helper types
template <std::size_t I, class T> (since C++14)
using tuple_element_t = typename tuple_element<I, T>::type;
Possible implementation
Example
// Run this code
#include <iostream>
#include <tuple>
template <class... Args>
struct type_list
{
template <std::size_t N>
using type = typename std::tuple_element<N, std::tuple<Args...>>::type;
};
int main()
{
std::cout << std::boolalpha;
type_list<int, char, bool>::type<2> x = true;
std::cout << x << '\n';
}
Output:
See also
std::tuple_element<std::array> (class template specialization)
std::tuple_element<std::pair> obtains the type of the elements of pair
(C++11)
