Przestrzenie nazw
Warianty

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ę.

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) [edit]
uzyskuje typ elementów kontenera array
(specjalizacja szablonu klasy) [edit]
uzyskuje rozmiary pary pair
(specjalizacja szablonu klasy) [edit]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.