名稱空間
變體
操作

std::incrementable_traits

來自 cppreference.com
 
 
迭代器庫
迭代器概念
迭代器原語
(C++17 中已棄用)
incrementable_traits
(C++20)


演算法概念與工具
間接可呼叫概念
常用演算法要求
(C++20)
(C++20)
(C++20)
工具
(C++20)
迭代器介面卡
範圍訪問
(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) 指標的特化。
提供一個成員型別 difference_type,與 std::ptrdiff_t 相同。
3) const 限定型別的特化。
4) 為定義公共且可訪問成員型別 difference_type 的型別進行特化。
提供一個成員型別 difference_type,與 T::difference_type 相同。
5) 為未定義公共且可訪問成員型別 difference_type 但支援減法運算的型別進行特化。
提供一個成員型別 difference_type,與 std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> 相同。隱式表示式變體規則(見下文)適用於表示式 a - b

[edit] 隱式表示式變體

使用對某個常量左值運算元不進行修改的表示式的 requires 表示式 也需要隱式表示式變體

[edit] 示例

[edit] 參閱

指定一個semiregular型別可以使用前置和後置增量運算子進行增量操作
(concept) [編輯]
計算迭代器的關聯型別
(alias template)[編輯]
提供迭代器屬性的統一介面
(class template) [編輯]