33
Execution control library
[exec]
33.8
Operation states
[exec.opstate]
33.8.1
General
[exec.opstate.general]
1
#
The
operation_
state
concept defines the requirements of an operation state type (
[exec.
async.
ops]
)
.
namespace
std
::
execution
{
template
<
class
O
>
concept
operation_
state
=
derived_
from
<
typename
O
::
operation_state_concept, operation_state_t
>
&
&
is_object_v
<
O
>
&
&
requires
(
O
&
o
)
{
{
start
(
o
)
}
noexcept
;
}
;
}
2
#
If an
operation_
state
object is destroyed during the lifetime of its asynchronous operation (
[exec.
async.
ops]
), the behavior is undefined
.
[
Note
1
:
The
operation_
state
concept does not impose requirements on any operations other than destruction and
start
, including copy and move operations
.
Invoking any such operation on an object whose type models
operation_
state
can lead to undefined behavior
.
—
end note
]
3
#
The program is ill-formed if it performs a copy or move construction or assigment operation on an operation state object created by connecting a library-provided sender
.