◐ Shell
clean mode source ↗

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

提供: cppreference.com

<tbody> </tbody>

ヘッダ <iterator> で定義

template< class T > concept /*dereferenceable*/ = /* see below */; // 説明専用

template< class T > using iter_value_t = /* see below */;

(1) (C++20以上)

template< /*dereferenceable*/ T > using iter_reference_t = decltype(*std::declval<T&>());

(2) (C++20以上)

template< class T > using iter_difference_t = /* see below */;

(3) (C++20以上)

template< /*dereferenceable*/ T> requires /* see below */ using iter_rvalue_reference_t = decltype(ranges::iter_move(std::declval<T&>()));

(4) (C++20以上)

template< std::readable T > using iter_common_reference_t = std::common_reference_t<std::iter_reference_t<T>, std::iter_value_t<T>&>;

(5) (C++20以上)

イテレータの関連型を計算します。 説明専用のコンセプト dereferenceable は、式 *std::declval<T&>() が有効かつ参照可能な型 (特に、 void でない) である場合に限り、満たされます。

1) T値型を計算します。 std::iterator_traits<T> が特殊化されていなければ、 std::iter_value_t<T>std::readable_traits<T>::value_type です。 そうでなければ、 std::iterator_traits<T>::value_type です。

2) T参照型を計算します。

3) T差型を計算します。 std::iterator_traits<T> が特殊化されていなければ、 std::iter_difference_t<T>std::incrementable_traits<T>::difference_type です。 そうでなければ、 std::iterator_traits<T>::difference_type です。

4) T右辺値参照型を計算します。 このエイリアステンプレートに対する制約の「see below」部分は、式 ranges::iter_move(std::declval<T&>()) が有効かつ参照可能な型 (特に、 void でない) である場合に限り、満たされます。

5) T共通参照型を計算します。 これはその参照型とその値型への左辺値参照型の間の共通の参照型です。

関連項目