名前空間
変種
操作

std::incrementable_traits

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
(C++17で非推奨)
incrementable_traits
(C++20)


アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
共通アルゴリズム要件
(C++20)
(C++20)
(C++20)
ユーティリティ
(C++20)
イテレータアダプタ
Rangeアクセス
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
ヘッダ <iterator> で定義
template< class I >
struct incrementable_traits {};
(1) (C++20以降)
template< class T >

    requires std::is_object_v<T>

struct incrementable_traits<T*>;
(2) (C++20以降)
template< class T >

struct incrementable_traits<const T>

    : incrementable_traits<T> {};
(3) (C++20以降)
template< class T >

    requires requires { typename T::difference_type; }

struct incrementable_traits<T>;
(4) (C++20以降)
template< class T >

    requires (!requires { typename T::difference_type; }) &&
             requires(const T& a, const T& b) { { a - b } -> std::integral; }

struct incrementable_traits<T>;
(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は、暗黙の式バリエーションも必要とする。

[編集]

[編集] 関連項目

semiregular 型が前置および後置インクリメント演算子でインクリメントできることを規定する
(コンセプト) [編集]
イテレータの関連型を計算する
(エイリアステンプレート)[編集]
イテレータのプロパティへの統一的なインターフェースを提供する
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)