std::experimental::ranges:: value_type
|
ヘッダーで定義
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
struct value_type { } ; |
(1) | |
|
template
<
class
T
>
struct value_type < T * > ; |
(2) | |
|
template
<
class
I
>
requires
std::
is_array
<
I
>
::
value
|
(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
;
}
|
(5) | |
|
template
<
class
T
>
requires requires
{
typename
T
::
element_type
;
}
|
(6) | |
型
I
に関連付けられた値型を計算します(存在する場合)。ユーザーはプログラム定義型に対して
value_type
を特殊化できます。
T
がオブジェクト型の場合、メンバ型
type
を
std::
remove_cv_t
<
T
>
に等しいものとして提供する。それ以外の場合、メンバ
type
は存在しない。
value_type
を定義する型に対する特殊化。
T::value_type
がオブジェクト型の場合、
type
メンバ型を
T::value_type
と等しい型として提供する。それ以外の場合、
type
メンバは存在しない。
element_type
を定義する型に対する特殊化(例:
std::shared_ptr
)。
T::element_type
がオブジェクト型の場合、メンバ型
type
を
std::
remove_cv_t
<
typename
T
::
element_type
>
と等しいものとして提供する。それ以外の場合、メンバ
type
は存在しない。
目次 |
ヘルパーエイリアステンプレート
|
template
<
class
T
>
using value_type_t = typename ranges :: value_type < T > :: type ; |
(範囲 TS) | |
注記
型が
value_type
メンバーと
element_type
メンバーの両方を含む場合、特殊化
(5)
と
(6)
は曖昧になります。
value_type
は、
Readable
型(イテレータなど)での使用を意図しています。範囲(ranges)での使用は意図されていません。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
operator
*
を適用することで型が読み取り可能であることを指定する
(コンセプト) |
|
|
イテレータの関連型を収集する互換性トレイトクラス
(エイリアステンプレート) |