名稱空間
變體
操作

std::iter_value_t, std::iter_reference_t, std::iter_const_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t

來自 cppreference.com
 
 
迭代器庫
迭代器概念
迭代器原語
iter_value_t(迭代器值型別)iter_difference_t(迭代器差值型別)iter_reference_t(迭代器引用型別)iter_const_reference_t(迭代器常引用型別)iter_rvalue_reference_t(迭代器右值引用型別)iter_common_reference_t(迭代器共同引用型別)
(C++20)(C++20)(C++20)(C++23)(C++20)(C++20)
演算法概念與工具
間接可呼叫概念
常用演算法要求
工具
迭代器介面卡
 
定義於標頭檔案 <iterator>
template< class T >
using iter_value_t = /* 見下文 */;
(1) (C++20 起)
template< /*可解引用*/ T >
using iter_reference_t = decltype(*std::declval<T&>());
(2) (C++20 起)
template< std::indirectly_readable T >

using iter_const_reference_t =
    std::common_reference_t<const std::iter_value_t<T>&&,

                            std::iter_reference_t<T>>;
(3) (C++23 起)
template< class T >
using iter_difference_t = /* 見下文 */;
(4) (C++20 起)
template< /*可解引用*/ T>

    requires /* 見下文 */
using iter_rvalue_reference_t =

    decltype(ranges::iter_move(std::declval<T&>()));
(5) (C++20 起)
template< std::indirectly_readable T >

using iter_common_reference_t =
    std::common_reference_t<std::iter_reference_t<T>,

                            /*間接值型別*/<T>>;
(6) (C++20 起)
幫助模板
template< class T >
concept /*可解引用*/ = /* 見下文 */;
(7) (僅作說明*)
template< std::indirectly_readable T >
using /*間接值型別*/ = /* 見下文 */;
(8) (僅作說明*)

計算迭代器的關聯型別。

1) 計算 T值型別
2) 計算 T引用型別
3) 計算 T常量引用型別
4) 計算 T差值型別
5) 計算 T右值引用型別。此別名模板的約束僅在表示式 ranges::iter_move(std::declval<T&>()) 有效且具有可引用型別時才滿足。
6) 計算 T共同引用型別。這是其引用型別與其值型別的左值引用之間的共同引用型別。
7) 僅用於解釋的 concept dereferenceable 僅在表示式 *std::declval<T&>() 有效且具有可引用型別時才滿足。
8) 僅用於解釋的別名模板 indirect-value-t 表示以下內容:
  • std::invoke_result_t<Proj&, /*間接值型別*/<I>> 如果 Tstd::projected<I, Proj> 相同,其中 IProj 是某些型別。
  • 否則,為 std::iter_value_t<T>&

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
P2609R3 C++20 std::iter_common_reference_t 曾以
std::iter_value_t<T>& 的形式定義,這錯誤地處理了
std::projected 型別,這些型別會投影為右值引用型別
已根據
/*間接值型別*/<T>
進行定義以處理此類情況。

[編輯] 參閱

透過應用運算子*指定型別是間接可讀的
(概念) [編輯]
指定一個semiregular型別可以使用前置和後置增量運算子進行增量操作
(概念) [編輯]
計算indirectly_readable型別的值型別
(類模板) [編輯]
計算weakly_incrementable型別的差值型別
(類模板) [編輯]
提供迭代器屬性的統一介面
(類模板) [編輯]
獲取範圍的迭代器和哨兵型別
(別名模板)[編輯]
獲取範圍的引用型別
(別名模板)[編輯]
獲取範圍的大小、差值和值型別
(別名模板)[編輯]