- utility[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
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
}
- tuple_element[link tuple_element.md]
- tuple_element_t[link tuple_element.md]
- pair[link /reference/utility/pair.md]
タプルと見なせる型から指定した位置の要素を取得する。
<utility>
ヘッダでは、pair
に関するオーバーロードを提供する。
- (1) ~ (4) : テンプレートパラメータ
I
が、0か1であること。この要件を満たさない場合は、コンパイルエラーとなる。 - (5) ~ (12) : 型Tと型Uが異なる型であること。この要件を満たさない場合は、コンパイルエラーとなる。
- (1) ~ (4) :
pair
のI
番目の要素 - (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;
}
}
- std::get[color ff0000]
1
a
1
a
- C++11
- Clang: ??
- GCC: 4.6.1 [mark verified]
- ICC: ??
- Visual C++: 2008 (std::tr1) [mark verified], 2010 [mark verified], 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]