最終更新日時(UTC):
が更新

履歴 編集

function template
<utility>

std::get(C++11)

namespace std {
  template <std::size_t I, class T1, class T2>
  typename tuple_element<I, pair<T1, T2>>::type&
    get(pair<T1, T2>& x) noexcept;                     // (1) C++11

  template <std::size_t I, class T1, class T2>
  constexpr tuple_element_t<I, pair<T1, T2>>&
    get(pair<T1, T2>&) noexcept;                       // (1) C++14

  template <std::size_t I, class T1, class T2>
  typename tuple_element<I, pair<T1, T2>>::type&&
    get(pair<T1, T2>&& x) noexcept;                    // (2) C++11

  template <std::size_t I, class T1, class T2>
  constexpr tuple_element_t<I, pair<T1, T2>>&&
    get(pair<T1, T2>&&) noexcept;                      // (2) C++14

  template <std::size_t I, class T1, class T2>
  const typename tuple_element<I, pair<T1, T2>>::type&
    get(const pair<T1, T2>& x) noexcept;               // (3) C++11

  template <std::size_t I, class T1, class T2>
  constexpr const tuple_element_t<I, pair<T1, T2>>&
    get(const pair<T1, T2>&) noexcept;                 // (3) C++14

  template <std::size_t I, class T1, class T2>
  constexpr const tuple_element_t<I, pair<T1, T2>>&&
    get(const pair<T1, T2>&& p) noexcept;              // (4) C++17

  template <class T, class U>
  constexpr T&
    get(pair<T, U>& p) noexcept;                       // (5) C++14

  template <class T, class U>
  constexpr const T&
    get(const pair<T, U>& p) noexcept;                 // (6) C++14

  template <class T, class U>
  constexpr T&&
    get(pair<T, U>&& p) noexcept;                      // (7) C++14

  template <class T, class U>
  constexpr const T&&
    get(const pair<T, U>&& p) noexcept;                // (8) C++17

  template <class T, class U>
  constexpr T&
    get(pair<U, T>& p) noexcept;                       // (9) C++14

  template <class T, class U>
  constexpr const T&
    get(const pair<U, T>& p) noexcept;                 // (10) C++14

  template <class T, class U>
  constexpr T&&
    get(pair<U, T>&& p) noexcept;                      // (11) C++14

  template <class T, class U>
  constexpr const T&&
    get(const pair<U, T>&& p) noexcept;                // (12) C++17
}

概要

タプルと見なせる型から指定した位置の要素を取得する。

<utility>ヘッダでは、pairに関するオーバーロードを提供する。

要件

  • (1) ~ (4) : テンプレートパラメータIが、0か1であること。この要件を満たさない場合は、コンパイルエラーとなる。
  • (5) ~ (12) : 型Tと型Uが異なる型であること。この要件を満たさない場合は、コンパイルエラーとなる。

戻り値

  • (1) ~ (4) : pairI番目の要素
  • (5) ~ (8) : p.firstへの参照
  • (9) ~ (12) : p.secondへの参照

例外

投げない

#include <iostream>
#include <utility>

int main()
{
  std::pair<int, char> p(1, 'a');

  //位置を指定して取得する方法。(1)〜(4)
  {
    int& i = std::get<0>(p);
    char& c = std::get<1>(p);

    std::cout << i << std::endl;
    std::cout << c << std::endl;
  }
  std::cout << std::endl;

  //型を指定して取得する方法。(5)〜(12)
  {
    int& i = std::get<int>(p);
    char& c = std::get<char>(p);

    std::cout << i << std::endl;
    std::cout << c << std::endl;
  }
}

出力

1
a

1
a

バージョン

言語

  • C++11

処理系

  • Clang: ??
  • GCC: 4.6.1
  • ICC: ??
  • Visual C++: 2008 (std::tr1) , 2010 , 2012 , 2013 , 2015

関連項目

参照