diff --git a/execution.html b/execution.html index d68a4c4..dd4382d 100644 --- a/execution.html +++ b/execution.html @@ -2246,7 +2246,7 @@
std :: execution
c
, let GET - AWAITER ( c , p )
be
expression-equivalent to the series of transformations and conversions
applied to c
as the operand of an await-expression in a coroutine,
-resulting in lvalue e
as described by [expr.await]/3.2-4, where p
is an lvalue refering to the coroutine’s promise type, P
. This includes the invocation of the promise type’s await_transform
member if any, the invocation of the operator co_await
picked by overload resolution if any, and any necessary implicit
+resulting in lvalue e
as described by [expr.await]/3.2-4, where p
is an lvalue referring to the coroutine’s promise type, P
. This includes the invocation of the promise type’s await_transform
member if any, the invocation of the operator co_await
picked by overload resolution if any, and any necessary implicit
conversions and materializations.
as
be a pack of rvalue subexpressions of types decay_t < Vs > ...
refering to objects direct-initilized from vs
. If the function
+
, if that expression is valid. Let
be a pack of rvalue subexpressions of types
referring to objects direct-initilized from
. If the function
selected by
does not return a sender whose asynchronous
operations execute value completion operations on an execution agent
belonging to the execution resource associated with
, with value result
@@ -7492,7 +7492,7 @@
Let
be an expression denoting an object
such that
returns a copy of
, and
is expression-equivalent to
for all arguments
and for all
whose type satisfies
and is not
.
Let
be an expression denoting an object
such that
returns a copy of
, and
is expression-equivalent to
for all arguments
and for all
whose type satisfies
and is not
.
The name
denotes a customization point object. For some subexpressions
and
, let
be
and
be
. If
does not satisfy
, or
does not satisfy
,
is ill-formed. Otherwise, the expression
is expression-equivalent to:
e
, where s1
is a sender returned from on
or a copy of such, let S1
be decltype (( s1 ))
.
-Let E '
be decltype (( replace - scheduler ( e , sch )))
.
+Let E2
be decltype (( replace - scheduler ( e , sch )))
.
Then the type of tag_invoke ( get_completion_signatures , s1 , e )
shall be:
make_completion_signatures < copy_cvref_t < S1 , S > , -E ', +E2 , make_completion_signatures < schedule_result_t < Sch > , E , @@ -7600,10 +7600,10 @@
s2 . Whenis connected with some receiver
s2 , it:
out_r
- -
Constructs a receiver
+such that when a receiver completion operation
r is called, it decay-copies
Tag ( r , args ...) into
args ... (see below) as
op_state and constructs a receiver
args '... such that:
r2 Constructs a receiver
such that when a receiver completion operation
r is called, it decay-copies
Tag ( r , args ...) into
args ... (see below) as
op_state and constructs a receiver
args2 ... such that:
r2 +
- -
When
+is called, it calls
set_value ( r2 ) .
Tag ( out_r , std :: move ( args ')...) When
is called, it calls
set_value ( r2 ) .
Tag ( out_r , std :: move ( args2 )...)
is expression-equivalent to
set_error ( r2 , e ) .
set_error ( out_r , e ) - @@ -7668,68 +7668,74 @@
then attaches an invocable as a continuation for an input sender’s value completion operation.- -
The name
+denotes a customization point object. For some -subexpressions
then and
s , let
f be
S , let
decltype (( s )) be the -decayed type of
F , and let
f be an xvalue refering to an object -decay-copied from
f '. If
f does not satisfy
S , or
sender does not model
F ,
movable - value is -ill-formed. Otherwise, the expression
then is -expression-equivalent to:
then ( s , f ) The name
denotes a customization point object. For some subexpressions
then and
s , let
f be
S and let
decltype (( s )) be the decayed type of
F . If
f does not satisfy
S , or
sender does not model
F ,
movable - value is ill-formed. Otherwise, +the expression
then ( s , f ) is expression-equivalent to:
then ( s , f ) +
- -
+
, if that expression is valid.
tag_invoke ( then , get_completion_scheduler < set_value_t > ( get_env ( s )), s , f )
, +if that expression is valid.
tag_invoke ( then , get_completion_scheduler < set_value_t > ( get_env ( s )), s , f )
- -
Mandates: The type of the
+expression above satisfies
tag_invoke .
sender Mandates: The type of the
expression above + satisfies
tag_invoke .
sender Otherwise,
, if that expression is valid.
tag_invoke ( then , s , f )
- -
Mandates: The type of the
+expression above satisfies
tag_invoke .
sender Mandates: The type of the
expression above + satisfies
tag_invoke .
sender - -
Otherwise, constructs a sender
+. When
s2 is connected with some receiver
s2 , it:
out_r Otherwise, a sender expression
such that when
out_s is + connected with some receiver
out_s , it returns an operation state
out_r containing copies of
o and
f and the result of calling
out_r , where
connect ( s2 , r ) is a reference to an object decay-copied + from
s2 and that has the same _cv_ qualifiers and value category as
s ; and where
out_s is a receiver as described below.
r +
- -
Constructs a receiver
+such that:
r Let
and
f2 be xvalues referring respectively to the copies + of
out_r2 and
f in
out_r . The receiver
o behaves as follows:
r
- -
When
+is called, let
set_value ( r , args ...) be the -expression
v . If
invoke ( f ', args ...) is
decltype ( v ) , -calls
void ; otherwise, it calls
set_value ( out_r ) . If any of these throw an -exception, it catches it and calls
set_value ( out_r , v ) . If any of these expressions would be -ill-formed, the expression
set_error ( out_r , current_exception ()) is -ill-formed.
set_value ( r , args ...) When
is called, let
set_value ( r , args ...) be the expression
v . If
invoke ( f2 , args ...) is
decltype ( v ) , evaluates
void and calls
v ; otherwise, it calls
set_value ( out_r ) . If any of these throw an exception, the +exception is caught and
set_value ( out_r2 , v ) is called. If any of these expressions would be ill-formed, the +expression
set_error ( out_r2 , current_exception ()) is ill-formed.
set_value ( r , args ...) - -
+
is expression-equivalent to
set_error ( r , e ) .
set_error ( out_r , e )
is expression-equivalent to
set_error ( r , e ) .
set_error ( out_r2 , e ) - -
+
is expression-equivalent to
set_stopped ( r ) .
set_stopped ( out_r )
is expression-equivalent to
set_stopped ( r ) .
set_stopped ( out_r2 ) - -
Returns an expression-equivalent to
-.
connect ( s , r ) - -
Let
+name the type
compl - sig - t < Tag , Args ... > if
Tag () is a template paramter pack containing the -single type
Args ... ; otherwise,
void . Given -subexpressions
Tag ( Args ...) and
s2 where
e is a sender returned from
s2 or a copy of such, let
then be
S2 and let
decltype (( s2 )) be
E . The type of
decltype (( e )) shall be equivalent -to:
tag_invoke ( get_completion_signatures , s2 , e ) Let
+be a non-
inner_op lvalue referring to the operation + state in
const .
o is expression-equivalent to
start ( o ) .
start ( inner_op ) - +
Given subexpressions
and
out_s where
e is a sender +returned from
out_s or a copy of such, let
then ( s , f ) be
OutS and let
decltype (( out_s )) be
E . The type of
decltype (( e )) shall be:
tag_invoke ( get_completion_signatures , out_s , e ) -make_completion_signatures < -copy_cvref_t < S2 , S > , E , set - error - signature , +clone - cvref - t < OutS , S > , E , set - error - signature , set - value - completions > ; where
+is an alias for:
set - value - completions where
is the alias +template:
set - value - completions -template < class ... As > -set - value - completions = -completion_signatures < compl - sig - t < set_value_t , invoke_result_t < F , As ... >>> +using set - value - completions = +completion_signatures < SET - VALUE - SIG ( invoke_result_t < F , As ... > ) > and
+is an alias for
set - error - signature if any of the types -in the
completion_signatures < set_error_t ( exception_ptr ) > named by
type - list are
value_types_of_t < copy_cvref_t < S2 , S > , E , potentially - throwing , type - list > ; otherwise,
true_type , where
completion_signatures <> is the template alias:
potentially - throwing and
is an alias for
set - error - signature if any of the +types in the
completion_signatures < set_error_t ( exception_ptr ) > named by
type - list are
value_types_of_t < clone - cvref - t < OutS , S > , E , potentially - throwing , type - list > ; otherwise,
true_type , where
completion_signatures <> is the template alias:
potentially - throwing -template < class ... As > using potentially - throwing = -bool_constant <! is_nothrow_invocable_v < F , As ... >> ; +negation < is_nothrow_invocable < F , As ... >> ; - +
The expression
+has undefined behavior unless it returns a sender
then ( s , f ) that:
out_s +
-- +
Invokes
+or a copy of such with the value result datums of
f using the result value of
s as
f ’s value completion, and
out_s - +
Forwards the non-value completion operations unchanged.
If the function selected above does not return a sender that invokes
with the value result datums of
f using
s ’s return value as the sender’s value completion, and forwards the non-value completion operations unchanged, the behavior of calling
f is undefined.
then ( s , f ) 11.9.6.7.
[exec.upon.error]
execution :: upon_error @@ -7739,7 +7745,7 @@
upon_error denotes a customization point object. For some subexpressionsand
s , let
f be
S , let
decltype (( s )) be the -decayed type of
F , and let
f be an xvalue refering to an object +decayed type of
f ', and let
f be an xvalue referring to an object decay-copied from
f2 . If
f does not satisfy
S , or
sender does not model
F ,
movable - value is ill-formed. Otherwise, the expression
upon_error is expression-equivalent to: @@ -7766,7 +7772,7 @@
upon_error ( s , f )
set_value ( r , args ...) is expression-equivalent to.
set_value ( out_r , args ...) When
@@ -7776,7 +7782,7 @@is called, let
set_error ( r , e ) be the -expression
v . If
invoke ( f ', e ) is
decltype ( v ) , calls
void ; otherwise, it calls
set_value ( out_r ) . If any of these throw an +expression
set_value ( out_r , v ) . If
invoke ( f2 , e ) is
decltype ( v ) , calls
void ; otherwise, it calls
set_value ( out_r ) . If any of these throw an exception, it catches it and calls
set_value ( out_r , v ) . If any of these expressions would be ill-formed, the expression
set_error ( out_r , current_exception ()) is ill-formed.
set_error ( r , e )
connect ( s , r ) .- -
Let
name the type
compl - sig - t < Tag , Args ... > if
Tag () is a template paramter pack containing the +
Args ... Let
@@ -7807,7 +7813,7 @@name the type
compl - sig - t < Tag , Args ... > if
Tag () is a template parameter pack containing the single type
Args ... ; otherwise,
void . Given subexpressions
Tag ( Args ...) and
s2 where
e is a sender returned from
s2 or a copy of such, let
upon_error be
S2 and let
decltype (( s2 )) be
E . The type of
decltype (( e )) shall be equivalent to:
tag_invoke ( get_completion_signatures , s2 , e )
upon_stopped denotes a customization point object. For some subexpressionsand
s , let
f be
S , let
decltype (( s )) be the -decayed type of
F , and let
f be an xvalue refering to an object +decayed type of
f ', and let
f be an xvalue referring to an object decay-copied from
f2 . If
f does not satisfy
S , or
sender does not model both
F and
movable - value ,
invocable is ill-formed. Otherwise, the expression
upon_stopped is expression-equivalent to:
upon_stopped ( s , f )
- @@ -7834,7 +7840,7 @@
set_error ( r , e ) is expression-equivalent to.
set_error ( out_r , e ) When
@@ -7842,7 +7848,7 @@is called, let
set_stopped ( r ) be the -expression
v . If
invoke ( f ') has type
v , calls
void ; otherwise, calls
set_value ( out_r ) . If any of these throw an +expression
set_value ( out_r , v ) . If
invoke ( f2 ) has type
v , calls
void ; otherwise, calls
set_value ( out_r ) . If any of these throw an exception, it catches it and calls
set_value ( out_r , v ) . If any of these expressions would be ill-formed, the expression
set_error ( out_r , current_exception ()) is ill-formed.
set_stopped ( r )
connect ( s , r ) .- -
Let
name the type
compl - sig - t < Tag , Args ... > if
Tag () is a template paramter pack containing the +
Args ... Let
@@ -7868,7 +7874,7 @@name the type
compl - sig - t < Tag , Args ... > if
Tag () is a template parameter pack containing the single type
Args ... ; otherwise,
void . Given subexpressions
Tag ( Args ...) and
s2 where
e is a sender returned from
s2 or a copy of such, let
upon_stopped be
S2 and let
decltype (( s2 )) be
E . The type of
decltype (( e )) shall be equivalent to:
tag_invoke ( get_completion_signatures , s2 , e )
let_value ,, and
let_error denote customization point objects. Let the expression
let_stopped be one of
let - cpo ,
let_value , or
let_error . -For subexpressions
let_stopped and
s , let
f be
S , let
decltype (( s )) be the decayed type of
F , and let
f be an xvalue that refers to an object decay-copied from
f '. +For subexpressions
f and
s , let
f be
S , let
decltype (( s )) be the decayed type of
F , and let
f be an xvalue that refers to an object decay-copied from
f2 . If
f does not satisfy
S , the expression
sender is ill-formed. If
let - cpo ( s , f ) does not satisfy
F , the expression
invocable is ill-formed. Otherwise, the expression
let_stopped ( s , f ) is expression-equivalent to: @@ -7886,7 +7892,7 @@
let - cpo ( s , f )
tag_invoke expression above satisfies.
sender - -
Otherwise, given a receiver
+and an lvalue
out_r refering to an object decay-copied from
out_r '.
out_r Otherwise, given a receiver
and an lvalue
out_r referring to an object decay-copied from
out_r '.
out_r
For
, let
let_value be
set - cpo . @@ -7897,7 +7903,7 @@
set_value
r be an rvalue of a receiver typesuch that:
R @@ -9027,8 +9033,8 @@
- -
When
is called, the receiver
set - cpo ( r , args ...) decay-copies
r into
args ... as
op_state2 , then calls
args '... , resulting in a sender
invoke ( f ', args '...) . +
s3 When
is called, the receiver
set - cpo ( r , args ...) decay-copies
r into
args ... as
op_state2 , then calls
args2 ... , resulting in a sender
invoke ( f2 , args2 ...) . It then calls
s3 , resulting in an operation state
connect ( s3 , std :: move ( out_r ')) .
op_state3 is saved as a part of
op_state3 . It then calls
op_state2 . If any of these throws an exception, it catches it and calls
start ( op_state3 ) . @@ -7993,7 +7999,7 @@
set_error ( std :: move ( out_r '), current_exception ())
f ( i , args ...) for eachof type
i from
Shape to
0 where
shape is a pack of subexpressions refering to the value completion +
args If the function selected above does not return a sender that invokes
for each
f ( i , args ...) of type
i from
Shape to
0 where
shape is a pack of subexpressions referring to the value completion result datums of the input sender, or does not execute a value completion operation with said datums, the behavior of calling
args is undefined.
bulk ( s , shape , f )
completion_signatures .[Example:
-// Given a sender S and an environment Env, adapt S’s completion -// signatures by lvalue-ref qualifying the values, adding an additional +// Given a sender S and an environment Env, adapt the completion +// signatures of S by lvalue-ref qualifying the values, adding an additional // exception_ptr error completion if its not already there, and leaving the // other completion signatures alone. template < class ... Args > diff --git a/receiver_redesign.html b/receiver_redesign.html index a7ef5e4..12ebd00 100644 --- a/receiver_redesign.html +++ b/receiver_redesign.html @@ -2162,7 +2162,7 @@P2532R0
-
Removing exception_ptr from the Receiver Concepts Published Proposal,
+Published Proposal,
- Author: