GeezerVison is showing cpprefjp.github.io — std::get - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月19日 21時31分51秒 (JST)
rotarymars
が更新
履歴
編集
function template
<tuple>
std:: 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 ... >& t ) noexcept ; // (3) C++14
template < size_t I , class ... Types >
constexpr const tuple_element_t < I , tuple < Types ... > >&&
get ( const tuple < Types ... >&& t ) noexcept ; // (4) C++17
template < class T , class ... Types >
constexpr T & get ( tuple < Types ... >& t ) noexcept ; // (5) C++14
template < class T , class ... Types >
constexpr T && get ( tuple < Types ... >&& t ) noexcept ; // (6) C++14
template < class T , class ... Types >
constexpr const T & get ( const tuple < Types ... >& t ) noexcept ; // (7) C++14
template < class T , class ... Types >
constexpr const T && get ( const tuple < Types ... >&& t ) noexcept ; // (8) C++17
}
概要
tupleオブジェクトから指定した位置の要素を取得する。
要件
(1), (2), (3), (4) : テンプレートパラメータIがtupleの要素数よりも小さいこと。この要件を満たさない場合は、コンパイルエラーとなる。
(5), (6), (7), (8) : 型TがTypes...の中にひとつだけ含まれること。この要件を満たさない場合は、コンパイルエラーとなる。
戻り値
(1), (2), (3), (4) : tupleオブジェクトtのI番目の要素への参照
(5), (6), (7), (8) : tupleオブジェクトtに含まれるT型の要素への参照
例外
投げない
備考
この関数がメンバ関数ではなく非メンバ関数として定義されているのは、ユーザーにtemplate限定子を指定させるのを避けるためである。メンバ関数にした場合、テンプレート内でその関数を使用すると、t.template get<I>()のようにtemplateキーワードをユーザーが指定しなければならない
例
基本的な使い方
出力
1
a
hello
1
a
hello
const右辺値参照版が必要な状況 (4), (8)
出力
Hello
get関数をADLで呼び出す (C++20)
出力
1
バージョン
言語
処理系
関連項目
参照