Namespaces
Variants

std:: iter_value_t, std:: iter_reference_t, std:: iter_const_reference_t, std:: iter_difference_t, std:: iter_rvalue_reference_t, std:: iter_common_reference_t

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
iter_value_t iter_difference_t iter_reference_t iter_const_reference_t iter_rvalue_reference_t iter_common_reference_t
(C++20) (C++20) (C++20) (C++23) (C++20) (C++20)
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
(注:指定されたHTML要素には翻訳対象のテキストコンテンツが含まれていないため、翻訳作業は不要です。HTML構造と属性はそのまま保持されています。)
定義済みヘッダー <iterator>
template < class T >
using iter_value_t = /* 下記参照 */ ;
(1) (C++20以降)
template < /*dereferenceable*/ T >
using iter_reference_t = decltype ( * std:: declval < T & > ( ) ) ;
(2) (C++20以降)
template < std:: indirectly_readable T >

using iter_const_reference_t =
std:: common_reference_t < const std :: iter_value_t < T > && ,

std :: iter_reference_t < T >> ;
(3) (C++23以降)
template < class T >
using iter_difference_t = /* 下記参照 */ ;
(4) (C++20以降)
template < /*dereferenceable*/ T >

requires /* 下記参照 */
using iter_rvalue_reference_t =

decltype ( ranges:: iter_move ( std:: declval < T & > ( ) ) ) ;
(5) (C++20以降)
template < std:: indirectly_readable T >

using iter_common_reference_t =
std:: common_reference_t < std :: iter_reference_t < T > ,

/*間接値型*/ < T >> ;
(6) (C++20以降)
ヘルパーテンプレート
template < class T >
concept /*dereferenceable*/ = /* see below */ ;
(7) ( 説明専用* )
template < std:: indirectly_readable T >
using /*indirect-value-t*/ = /* 下記参照 */ ;
(8) ( 説明専用* )

イテレータの関連型を計算します。

1) T 値型 を計算する。
2) T 参照型 を計算する。
3) T const reference type を計算します。
4) T difference type を計算する。
5) T rvalue reference type を計算する。このエイリアステンプレートの制約は、 ranges:: iter_move ( std:: declval < T & > ( ) ) という式が有効であり、かつ参照可能な型を持つ場合にのみ満たされる。
6) T 共通参照型 を計算します。これは、その参照型とその値型への左辺値参照との間の共通参照型です。
7) 説明専用コンセプト dereferenceable は、式 * std:: declval < T & > ( ) が有効であり、 参照可能な型 を持つ場合にのみ満たされる。
8) 説明専用のエイリアステンプレート indirect-value-t は以下を示す:
  • std:: invoke_result_t < Proj & , /*indirect-value-t*/ < I >> の場合、 T が何らかの型 I および Proj に対する std :: projected < I, Proj > と同一であるとき。
  • それ以外の場合、 std :: iter_value_t < T > &

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
P2609R3 C++20 std::iter_common_reference_t
std :: iter_value_t < T > & に基づいて定義されており、
右辺値参照型に投影する std::projected 型を
誤って扱っていた
/*indirect-value-t*/ < T > に基づいて定義し、
そのようなケースを扱うようにした

関連項目

型が * 演算子を適用することで間接的に読み取り可能であることを指定する
(コンセプト)
semiregular 型が前置および後置インクリメント演算子でインクリメント可能であることを指定する
(コンセプト)
indirectly_readable 型の値型を計算する
(クラステンプレート)
weakly_incrementable 型の差分型を計算する
(クラステンプレート)
イテレータのプロパティに対する統一インターフェースを提供する
(クラステンプレート)
範囲のイテレータ型とセンチネル型を取得する
(エイリアステンプレート)
範囲の参照型を取得する
(エイリアステンプレート)
範囲のサイズ型、差分型、値型を取得する
(エイリアステンプレート)