std::experimental::ranges:: Writable
|
template
<
class
Out,
class
T
>
concept
bool
Writable
=
|
(ranges TS) | |
概念
Writable<Out, T>
规定了将类型和值类别由
T
编码的值写入迭代器
Out
所引用对象的要求。
设
E
为满足
decltype
(
(
E
)
)
为
T
的表达式,且
o
为类型
Out
的可解引用对象,则仅当满足以下条件时
Writable<Out, T>
概念成立:
-
若满足
Readable
<
Out
>
&&
Same
<
ranges
::
value_type_t
<
Out
>
,
std::
decay_t
<
T
>>
条件,则任何上述赋值操作后
*
o
的值等于赋值前
E的值。
o
在上述任意赋值表达式求值后不要求保持可解引用状态。若
E
为右值,则其所指代对象的结果状态有效但未指定。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式的两次求值,若输入对象相同,则输出结果必须相等,除非其间显式修改了这些输入对象。
注释
唯一有效的 operator * 使用方式是在赋值表达式的左侧。通过同一可写类型值的赋值操作最多只能执行一次。
使用
const_cast
的必要表达式可防止具有纯右值
reference
类型的
Readable
对象意外满足
Writable
的语法要求,同时允许代理引用在其常量性为浅层时继续正常工作。详见
Ranges TS issue 381
。