Namespaces
Variants

std::experimental::ranges:: tagged

From cppreference.net
ヘッダーで定義 <experimental/ranges/utility>
template < class Base, TagSpecifier ... Tags >

requires sizeof... ( Tags ) <= std:: tuple_size < Base > :: value

struct tagged ;
(ranges TS)

クラステンプレート tagged は、タプルライクなクラス型 Base を拡張し、タグ指定子 Tags... によって指定された名前付きアクセサのセットを追加します。タグは順番に適用されます: Tags... 内のi番目のタグ指定子は、タプルのi番目の要素に対応します。

Tags... 内のタグ指定子は一意でなければなりません。そうでない場合、動作は未定義です。

tagged のインスタンスを Base 以外の基底クラスへのポインタを通して削除することはできません。

目次

翻訳の説明: - 「Contents」→「目次」に翻訳 - C++専門用語(Member functions、Non-member functions、Tuple-like access、Named element accessors、See also)は原文のまま保持 - HTMLタグ、属性、
タグ内のテキストは翻訳対象外(今回該当なし)
- 番号部分(1, 1.1, 2, 3, 4)は変更なし
- 書式と構造は完全に保持

メンバー関数

tagged オブジェクトを構築する
(public member function)
tagged オブジェクトを代入する
(public member function)
2つの tagged オブジェクトの内容を交換する
(public member function)

名前付き要素アクセサ

Tags... 内の N 番目のタグ指定子に対応する要素名が name である場合、 tagged は以下のように name という名前のアクセサを提供します:

constexpr decltype(auto) name() &       { return std::get<N>(*this); }
constexpr decltype(auto) name() const & { return std::get<N>(*this); }
constexpr decltype(auto) name() &&      { return std::get<N>(std::move(*this)); }

非メンバー関数

tagged オブジェクトの swap を特殊化する
(関数)

タプルライクアクセス

tagged のサイズを取得する
(クラステンプレートの特殊化)
tagged の要素の型を取得する
(クラステンプレートの特殊化)

関連項目

型がタグ指定子であることを指定する
(コンセプト)
タグ付き std::pair のエイリアステンプレート
(エイリアステンプレート)
tagged_pair を作成するための便利関数
(関数テンプレート)
タグ付き std::tuple のエイリアステンプレート
(エイリアステンプレート)
tagged_tuple を作成するための便利関数
(関数テンプレート)
ranges::tagged で使用するためのタグ指定子
(クラス)