std:: indirectly_movable_storable
Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Defined in header
<iterator>
|
||
template
<
class
In,
class
Out
>
concept indirectly_movable_storable
=
|
(since C++20) | |
The
indirectly_movable_storable
concept specifies the relationship between an
indirectly_readable
type and an
indirectly_writable
type. In addition to
indirectly_movable
, this concept specifies that the move from the
indirectly_readable
type can be performed via an intermediate object.
Semantic requirements
In
and
Out
model
std
::
indirectly_movable_storable
<
In, Out
>
only if given a dereferenceable value
i
of type
In
:
-
After the definition
std::
iter_value_t
<
In
>
obj
(
ranges::
iter_move
(
i
)
)
;
,
obj
is equal to the value previously denoted by * i , and -
if
std::
iter_rvalue_reference_t
<
In
>
is an rvalue reference type,
*
i
is placed in a valid but unspecified state after the initialization of
obj
.
Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
See also
(C++20)
|
specifies that values may be moved from an
indirectly_readable
type to an
indirectly_writable
type
(concept) |
(C++20)
|
specifies that values may be copied from an
indirectly_readable
type to an
indirectly_writable
type and that the copy may be performed via an intermediate object
(concept) |