名前空間
変種
操作

std::experimental::ranges::value_type

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
イテレータライブラリ
イテレータのコンセプト
間接呼び出し可能コンセプト
                                                  
                                                  
                                                  
共通アルゴリズム要件
                                                  
Concept utilities
Iterator utilities and operations
Iterator traits
イテレータアダプタ
ストリームイテレータ
 
template< class I >
struct value_type {};
(1)
template< class T >
struct value_type<T*>;
(2)
template< class I >

    requires std::is_array<I>::value

struct value_type<I> : value_type<std::decay_t<I>> {};
(3)
template< class T >
struct value_type<const T> : value_type<std::decay_t<T>> {};
(4)
template< class T >

    requires requires { typename T::value_type; }

struct value_type<T>;
(5)
template< class T >

    requires requires { typename T::element_type; }

struct value_type<T>;
(6)

Iに関連付けられた値型を計算します(存在する場合)。ユーザーは、プログラム定義型に対してvalue_typeを特殊化できます。

1) プライマリテンプレートは空の構造体です。
2) ポインタの特殊化。Tがオブジェクト型の場合、std::remove_cv_t<T>に等しいメンバ型typeを提供します。それ以外の場合は、メンバtypeはありません。
3) 配列型の特殊化。
4) const修飾型の特殊化。
5) 公開されアクセス可能なメンバ型value_typeを定義する型の特殊化。T::value_typeがオブジェクト型の場合、T::value_typeに等しいメンバ型typeを提供します。それ以外の場合は、メンバtypeはありません。
6) 公開されアクセス可能なメンバ型element_typeを定義する型(例:std::shared_ptr)の特殊化。T::element_typeがオブジェクト型の場合、std::remove_cv_t<typename T::element_type>に等しいメンバ型typeを提供します。それ以外の場合は、メンバtypeはありません。

目次

[編集] ヘルパーエイリアステンプレート

template< class T >
using value_type_t = typename ranges::value_type<T>::type;
(ranges TS)

[編集] 注記

型がvalue_typeメンバとelement_typeメンバの両方を含む場合、特殊化(5)(6)は曖昧になります。

value_typeは、イテレータのようなReadable型との使用を目的としています。範囲との使用を目的としていません。

[編集]

[編集] 関連項目

演算子 * を適用することで読み取り可能であることを指定します。
(concept) [編集]
イテレータの関連型を収集する互換性トレイトクラス。
(alias template)[編集]
English 日本語 中文(简体) 中文(繁體)