名前空間
変種
操作

std::experimental::ranges::difference_type

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
イテレータライブラリ
イテレータのコンセプト
間接呼び出し可能コンセプト
                                                  
                                                  
                                                  
共通アルゴリズム要件
                                                  
Concept utilities
Iterator utilities and operations
Iterator traits
イテレータアダプタ
ストリームイテレータ
 
template< class I >
struct difference_type {};
(1)
template< class T >
struct difference_type<T*>;
(2)
template< class T >
struct difference_type<const T> : difference_type<std::decay_t<T>> {};
(3)
template< class T >

    requires requires { typename T::difference_type; }

struct difference_type<T>;
(4)
template< class T >

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

struct difference_type<T>;
(5)

I の関連する差分型を計算します。必要であれば。ユーザーはプログラム定義型のために difference_type を特殊化できます。

1) プライマリテンプレートは空の構造体です。
2) ポインタの特殊化。T がオブジェクト型の場合、std::ptrdiff_t に等しいメンバ型 type を提供します。それ以外の場合は、メンバ type はありません。
3) const 修飾された型に対する特殊化。
4) 公開かつアクセス可能なメンバ型 difference_type を定義する型の特殊化。T::difference_type に等しいメンバ型 type を提供します。
5) 公開かつアクセス可能なメンバ型 difference_type を定義しないが、減算をサポートする型の特殊化。std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> に等しいメンバ型 type を提供します。

[編集] ヘルパーエイリアステンプレート

template< class T >
using difference_type_t = typename ranges::difference_type<T>::type;
(ranges TS)

[編集]

[編集] 関連項目

Semiregular 型が前置および後置インクリメント演算子でインクリメントできることを指定します。
(concept) [編集]
イテレータの関連型を収集する互換性トレイトクラス。
(alias template)[編集]
English 日本語 中文(简体) 中文(繁體)