[exec.adapt.general] # 33 Execution control library [[exec]](./#exec) ## 33.9 Senders [[exec.snd]](exec.snd#exec.adapt.general) ### 33.9.12 Sender adaptors [[exec.adapt]](exec.adapt#general) #### 33.9.12.1 General [exec.adapt.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L3002) Subclause [[exec.adapt]](exec.adapt "33.9.12 Sender adaptors") specifies a set of sender adaptors[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L3005) The bitwise inclusive or operator is overloaded for the purpose of creating sender chains[.](#2.sentence-1) The adaptors also support function call syntax with equivalent semantics[.](#2.sentence-2) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L3010) Unless otherwise specified: - [(3.1)](#3.1) A sender adaptor is prohibited from causing observable effects, apart from moving and copying its arguments, before the returned sender is connected with a receiver using connect, and start is called on the resulting operation state[.](#3.1.sentence-1) - [(3.2)](#3.2) A parent sender ([[exec.async.ops]](exec.async.ops "33.3 Asynchronous operations")) with a single child sender sndr has an associated attribute object equal to*FWD-ENV*(get_env(sndr)) ([[exec.fwd.env]](exec.fwd.env "33.5.1 forwarding_­query"))[.](#3.2.sentence-1) - [(3.3)](#3.3) A parent sender with more than one child sender has an associated attributes object equal to env<>{}[.](#3.3.sentence-1) - [(3.4)](#3.4) When a parent sender is connected to a receiver rcvr, any receiver used to connect a child sender has an associated environment equal to *FWD-ENV*(get_env(rcvr))[.](#3.4.sentence-1) - [(3.5)](#3.5) An adaptor whose child senders are all non-dependent ([[exec.async.ops]](exec.async.ops "33.3 Asynchronous operations")) is itself non-dependent[.](#3.5.sentence-1) - [(3.6)](#3.6) These requirements apply to any function that is selected by the implementation of the sender adaptor[.](#3.6.sentence-1) - [(3.7)](#3.7) *Recommended practice*: Implementations should use the completion signatures of the adaptors to communicate type errors to users and to propagate any such type errors from child senders[.](#3.7.sentence-1) [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L3043) If a sender returned from a sender adaptor specified in [[exec.adapt]](exec.adapt "33.9.12 Sender adaptors") is specified to include set_error_t(Err) among its set of completion signatures where decay_t denotes the type exception_ptr, but the implementation does not potentially evaluate an error completion operation with an exception_ptr argument, the implementation is allowed to omit the exception_ptr error completion signature from the set[.](#4.sentence-1)