最終更新日時:
が更新

履歴 編集

function
<tuple>

std::tuple::get(C++11)

namespace std {
  template <size_t I, class... Types>
  typename tuple_element<I, tuple<Types...> >::type&
    get(tuple<Types...>& t) noexcept;                        // (1) C++11

  template <size_t I, class... Types>
  constexpr tuple_element_t<I, tuple<Types...>>&
    get(tuple<Types...>&) noexcept;                          // (1) C++14

  template <size_t I, class... types>
  typename tuple_element<I, tuple<Types...> >::type&&
    get(tuple<Types...>&& t) noexcept;                       // (2) C++11

  template <size_t I, class... Types>
  constexpr tuple_element_t<I, tuple<Types...>>&&
    get(tuple<Types...>&&) noexcept;                         // (2) C++14

  template <size_t I, class... Types>
  typename tuple_element<I, tuple<Types...> >::type const&
    get(const tuple<Types...>& t) noexcept;                  // (3) C++11

  template <size_t I, class... Types>
  constexpr const tuple_element_t<I, tuple<Types...>>&
    get(const tuple<Types...>&) noexcept;                    // (3) C++14

  template <class T, class... Types>
  constexpr T& get(tuple<Types...>& t) noexcept;             // (4) C++14

  template <class T, class... Types>
  constexpr T&& get(tuple<Types...>&& t) noexcept;           // (5) C++14

  template <class T, class... Types>
  constexpr const T& get(const tuple<Types...>& t) noexcept; // (6) C++14
}

概要

tupleオブジェクトから指定した位置の要素を取得する。

要件

  • (1), (2), (3) : テンプレートパラメータItupleの要素数よりも小さいこと。この要件を満たさない場合は、コンパイルエラーとなる。
  • (4), (5), (6) : 型TTypes...の中にひとつだけ含まれること。この要件を満たさない場合は、コンパイルエラーとなる。

戻り値

  • (1), (2), (3) : tupleオブジェクトtI番目の要素への参照
  • (4), (5), (6) : tupleオブジェクトtに含まれるT型の要素への参照

例外

投げない

#include <iostream>
#include <tuple>
#include <string>

int main()
{
  std::tuple<int, char, std::string> t(1, 'a', "hello");

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

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

  // 型を指定して取得する方法
  {
    int& i = std::get<int>(t);
    char& c = std::get<char>(t);
    std::string& s = std::get<std::string>(t);

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

出力

1
a
hello

1
a
hello

バージョン

言語

  • C++11

処理系

参照