std::get(std::tuple)
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <tuple> で定義
|
||
template< std::size_t I, class... Types > typename std::tuple_element<I, std::tuple<Types...>>::type& get( std::tuple<Types...>& t ) noexcept; |
(1) | (C++11以上) (C++14以上ではconstexpr) |
template< std::size_t I, class... Types > typename std::tuple_element<I, std::tuple<Types...>>::type&& get( std::tuple<Types...>&& t ) noexcept; |
(2) | (C++11以上) (C++14以上ではconstexpr) |
template< std::size_t I, class... Types > const typename std::tuple_element<I, std::tuple<Types...>>::type& get( const std::tuple<Types...>& t ) noexcept; |
(3) | (C++11以上) (C++14以上ではconstexpr) |
template< std::size_t I, class... Types > const typename std::tuple_element<I, std::tuple<Types...>>::type&& get( const std::tuple<Types...>&& t ) noexcept; |
(4) | (C++11以上) (C++14以上ではconstexpr) |
template< class T, class... Types > constexpr T& get( std::tuple<Types...>& t ) noexcept; |
(5) | (C++14以上) |
template< class T, class... Types > constexpr T&& get( std::tuple<Types...>&& t ) noexcept; |
(6) | (C++14以上) |
template< class T, class... Types > constexpr const T& get( const std::tuple<Types...>& t ) noexcept; |
(7) | (C++14以上) |
template< class T, class... Types > constexpr const T&& get( const std::tuple<Types...>&& t ) noexcept; |
(8) | (C++14以上) |
1-4) タプルから
I 番目の要素を取り出します。 I は [0, sizeof...(Types)) の範囲内の整数値でなければなりません。5-8) タプル
t の型が T である要素を取り出します。 タプルがその型の要素をちょうど1個持っているのでなければコンパイルに失敗します。引数
| t | - | 内容を取り出すタプル |
戻り値
t の選択された要素を指す参照。
欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR | 適用先 | 発行時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2485 | C++11 | there are no overloads for const tuple&& | the overloads are added |
例
Run this code
#include <iostream>
#include <string>
#include <tuple>
int main()
{
auto t = std::make_tuple(1, "Foo", 3.14);
// インデックスベースのアクセス
std::cout << "(" << std::get<0>(t) << ", " << std::get<1>(t)
<< ", " << std::get<2>(t) << ")\n";
// 型ベースのアクセス (C++14以上)
std::cout << "(" << std::get<int>(t) << ", " << std::get<const char*>(t)
<< ", " << std::get<double>(t) << ")\n";
// ノート: std::tie および構造家束縛もタプルを分解するために使用できます。
}
出力:
(1, Foo, 3.14)
(1, Foo, 3.14)
関連項目
array の要素にアクセスします (関数テンプレート) | |
(C++11) |
pair の要素にアクセスします (関数テンプレート) |
(C++17) |
指定されたインデックスまたは型 (一意な場合) の値を variant から読み込みます。 エラーの場合は例外を投げます (関数テンプレート) |