std::indirectly_writable
定義於標頭檔案 <iterator> |
||
template< class Out, class T > concept indirectly_writable = |
(C++20 起) | |
概念 indirectly_writable<Out, T> 指定了將型別和值類別由 T
編碼的值寫入迭代器 Out
所引用物件的要求。
[編輯] 語義要求
令 e
為一個表示式,使得 decltype((e)) 為 T
,且 o
為型別 Out
的可解引用物件,則 indirectly_writable<Out, T> 僅在以下情況被建模:
- 如果 std::indirectly_readable<Out> 被建模且 std::iter_value_t<Out> 與 std::decay_t<T> 型別相同,則在任何上述賦值後 *o 等於賦值前
e
的值。
在評估任何上述賦值表示式後,不要求 o
可解引用。如果 e
是一個 xvalue,則它所表示的物件的最終狀態是有效但未指定的。
[編輯] 等價性保留
在標準庫概念的 requires 表示式中宣告的表示式必須是等價性保留的(除非另有說明)。
[編輯] 注意
使用 operator* 的唯一有效方式是在賦值表示式的左側。透過間接可寫型別的相同值進行的賦值只能發生一次。
帶有 const_cast
的必需表示式防止帶有 prvalue reference
型別的 indirectly_readable
物件意外滿足 indirectly_writable
的語法要求,同時允許代理引用在它們的 constness 是淺層的情況下繼續工作。參見 Ranges TS issue 381。