std::incrementable_traits
From cppreference.com
| ヘッダ <iterator> で定義 |
||
| template< class I > struct incrementable_traits {}; |
(1) | (C++20以降) |
| template< class T > requires std::is_object_v<T> |
(2) | (C++20以降) |
| template< class T > struct incrementable_traits<const T> |
(3) | (C++20以降) |
| template< class T > requires requires { typename T::difference_type; } |
(4) | (C++20以降) |
| template< class T > requires (!requires { typename T::difference_type; }) && |
(5) | (C++20以降) |
I の関連する差分型を、もし存在すれば計算します。プログラムは、プログラム定義型に対して incrementable_traits を特殊化することができます。
1) プライマリテンプレートは空の構造体です。
2) ポインタに対する特殊化。
std::ptrdiff_t と同じメンバ型 difference_type を提供します。3) const 修飾された型に対する特殊化。
4) public かつアクセス可能なメンバ型
difference_type を定義する型に対する特殊化。T::difference_type と同じメンバ型 difference_type を提供します。5) public かつアクセス可能なメンバ型
difference_type を定義しないが、減算をサポートする型に対する特殊化。a - b 式の暗黙の式バリエーション規則(下記参照)が適用される、std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> と同じメンバ型 difference_type を提供します。[編集] 暗黙の式バリエーション
一部の定数左辺値オペランドに対して非変更的である式を使用するrequires式は、暗黙の式バリエーションも必要とする。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++20) |
semiregular 型が前置および後置インクリメント演算子でインクリメントできることを規定する(コンセプト) |
| (C++20)(C++20)(C++23)(C++20)(C++20)(C++20) |
イテレータの関連型を計算する (エイリアステンプレート) |
| イテレータのプロパティへの統一的なインターフェースを提供する (クラステンプレート) |