std::experimental::ranges:: Writable
|
헤더 파일에 정의됨
<experimental/ranges/iterator>
|
||
|
template
<
class
Out,
class
T
>
concept
bool
Writable
=
|
(ranges TS) | |
Writable<Out, T>
개념은
T
로 인코딩된 타입과 값 범주를 가진 값을 반복자
Out
의 참조된 객체에 쓰기 위한 요구사항을 명시합니다.
E
가
T
인
decltype
(
(
E
)
)
인 표현식이고,
o
가
Out
타입의 역참조 가능한 객체일 때,
Writable<Out, T>
는 다음 조건에서만 만족됩니다:
-
만약
Readable
<
Out
>
&&
Same
<
ranges
::
value_type_t
<
Out
>
,
std::
decay_t
<
T
>>
가 만족되면, 위의 할당 이후
*
o
는 할당 전
E값과 동일합니다.
o
는 위의 할당 표현식들을 평가한 후에 역참조 가능할 필요가 없습니다. 만약
E
가 xvalue인 경우, 그것이 나타내는 객체의 결과 상태는 유효하지만 지정되지 않습니다.
동등성 보존
표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.
- 표현식의 입력은 피연산자들로 구성됩니다.
- 표현식의 출력은 결과값과 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.
동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체로 이러한 표현식을 두 번 평가할 때, 해당 입력 객체에 명시적인 수정이 개입되지 않는 한 동일한 출력을 가져야 합니다.
참고 사항
operator * 의 유일하게 유효한 사용은 대입 표현식의 좌측에서입니다. 쓰기 가능한 타입의 동일한 값을 통한 대입은 한 번만 발생할 수 있습니다.
const_cast
를 사용한 필요한 표현식들은
Readable
객체들이 prvalue
reference
타입을 가질 경우 실수로
Writable
의 문법적 요구사항을 충족하는 것을 방지하면서, 프록시 참조가 constness가 얕은(shallow) 한 계속 작동할 수 있도록 허용합니다. 자세한 내용은
Ranges TS issue 381
를 참조하십시오.