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
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 - 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
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) |