std::tuple_element<std::pair>
Z cppreference.com
<tbody>
</tbody>
| Zdefiniowane w nagłówku <utility>
|
||
template< class T1, class T2 > struct tuple_element<0, std::pair<T1,T2> >; |
(1) | (od C++11) |
template< class T1, class T2 > struct tuple_element<1, std::pair<T1,T2> >; |
(2) | (od C++11) |
Częściowa specjalizacja std::tuple_element dla par, zapewniająca dostęp w czasie kopilacji do typów przechowywanych elementów, wykorzystująca przy tym krotkową składnię.
Spis treści
Typy składowe
Pierwsza wersja | |
| Typ składowy | Definicja |
type
|
T1
|
Druga wersja | |
| Typ składowy | Definicja |
type
|
T2
|
Możliwa implementacja
template<std::size_t I, typename T>
struct tuple_element;
template<typename T1, typename T2>
struct tuple_element<0, std::pair<T1,T2> >
{
using type = T1;
};
template<typename T1, typename T2>
struct tuple_element<1, std::pair<T1,T2> >
{
using type = T2;
};
|
Przykład
#include <tuple>
#include <iostream>
#include <string>
template <int N, typename T, typename U>
static auto constexpr get(std::pair<T, U> const& pair)
-> typename std::tuple_element<N, decltype(pair)>::type
{
return N == 0 ? pair.first : pair.second;
}
int main()
{
auto var = std::make_pair(1, std::string{"one"});
std::cout << get<0>(var) << " = " << get<1>(var);
}
Wynik:
1 = one
Zobacz także
| uzyskuje typ określonego elementu krotki (specjalizacja szablonu klasy) | |
| uzyskuje typ elementów kontenera array (specjalizacja szablonu klasy) | |
(C++11) |
uzyskuje rozmiary pary pair (specjalizacja szablonu klasy) |