std::experimental::ranges::difference_type

出自cppreference.com
 
 
實驗性
技術規範
文件系統庫 (文件系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行擴展 (並行 TS)
並行擴展 2 (並行 TS v2)
並發擴展 (並發 TS)
並發擴展 2 (並發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函數 (特殊函數 TR)
實驗性非 TS 功能特性
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
迭代器庫
迭代器概念
間接可調用概念
                                                  
                                                  
                                                  
常用算法要求
                                                  
概念工具
迭代器工具及運算
迭代器特徵
迭代器適配器
流迭代器
 
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;
(範圍 TS)

示例

參閱

指定 Semiregular 類型能以前後自增運算符自增
(概念) [編輯]
匯集迭代器的關聯類型的兼容性特徵類
(別名模板) [編輯]