std::experimental::ranges::Incrementable

從 cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
實驗性
技術規範
文件系統庫 (文件系統 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 >

concept bool Incrementable =
    Regular<I> &&
    WeaklyIncrementable<I> &&
    requires(I i) {
        { i++ } -> Same<I>&&;

    };
(範圍 TS)

概念 Incrementable<I> 指定能(用前和後自增運算符)自增的類型上的要求。要求自增運算(包括 WeaklyIncrementable 所要求者)保持相等性,並要求該類型為 EqualityComparable

abI 類型的可自增對象。Incrementable<I> 僅若下列條件成立才得到滿足:

  • bool(a == b)bool(a++ == b)
  • bool(a == b)bool(void(a++), a) == ++b)

[編輯] 相等性保持

若表達式對給定的相等輸入產生相等輸出,則它保持相等性

  • 表達式的輸入由其操作數組成。
  • 表達式的輸出由其結果和表達式所修改的所有操作數(若存在)組成。

每個要求保持相等性的表達式還進一步要求是穩定的:以相同輸入對象對這種表達式進行兩次求值必須擁有相等的輸出,而無任何對這些輸入對象的顯式中間修改。

除非另外提醒,每個用於 requires 表達式中的表達式都要求保持相等性且穩定,而表達式的求值必須只修改其非 const 操作數。必須不修改常運算數。

[編輯] 註解

a 等於 b 的要求蘊含 ++a 等於 ++b,這允許將 Incrementable 類型用於多趟算法。