Skip to content

Commit 99427af

Browse files
committed
fixup: add 34.8
1 parent ea4657d commit 99427af

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

source/exec.tex

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,6 +1094,57 @@
10941094

10951095
\rSec1[exec.opstate]{Operation states}
10961096

1097+
\rSec2[exec.opstate.general]{General}
1098+
1099+
\pnum
1100+
The \libconcept{operation_state} concept defines
1101+
the requirements of an operation state type\iref{async.ops}.
1102+
\begin{codeblock}
1103+
namespace std::execution {
1104+
template<class O>
1105+
concept @\deflibconcept{operation_state}@ =
1106+
@\libconcept{derived_from}@<typename O::operation_state_concept, operation_state_t> &&
1107+
is_object_v<O> &&
1108+
requires (O& o) {
1109+
{ start(o) } noexcept;
1110+
};
1111+
}
1112+
\end{codeblock}
1113+
1114+
\pnum
1115+
If an \libconcept{operation_state} object is destroyed
1116+
during the lifetime of its asynchronous operation\iref{async.ops},
1117+
the behavior is undefined.
1118+
\begin{note}
1119+
The \libconcept{operation_state} concept does not impose requirements
1120+
on any operations other than destruction and \tcode{start},
1121+
including copy and move operations.
1122+
Invoking any such operation on an object
1123+
whose type models \libconcept{operation_state} can lead to undefined behavior.
1124+
\end{note}
1125+
1126+
\pnum
1127+
The program is ill-formed
1128+
if it performs a copy or move construction or assigment operation on
1129+
an operation state object created by connecting a library-provided sender.
1130+
1131+
\rSec2[exec.opstate.start]{\tcode{execution::start}}
1132+
1133+
\pnum
1134+
The name \tcode{start} denotes a customization point object
1135+
that starts\iref{async.ops}
1136+
the asynchronous operation associated with the operation state object.
1137+
For a subexpression \tcode{op},
1138+
the expression \tcode{start(op)} is ill-formed
1139+
if \tcode{op} is an rvalue.
1140+
Otherwise, it is expression-equivalent to
1141+
\tcode{\exposid{MANDATE-NOTHROW}(op.start())}.
1142+
1143+
\pnum
1144+
If \tcode{op.start()} does not start\iref{async.ops}
1145+
the asynchronous operation associated with the operation state \tcode{op},
1146+
the behavior of calling \tcode{start(op)} is undefined.
1147+
10971148
\rSec1[exec.snd]{Senders}
10981149

10991150
\rSec1[exec.util]{Sender/receiver utilities}

0 commit comments

Comments
 (0)