[exec.scope.concepts] # 33 Execution control library [[exec]](./#exec) ## 33.14 Execution scope utilities [[exec.scope]](exec.scope#concepts) ### 33.14.1 Execution scope concepts [exec.scope.concepts] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L7711) The [scope_token](#concept:scope_token "33.14.1 Execution scope concepts [exec.scope.concepts]") concept defines the requirements on a type Token that can be used to create associations between senders and an async scope[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L7716) Let *test-sender* and *test-env* be unspecified types such that[sender_in](exec.snd.concepts#concept:sender_in "33.9.3 Sender concepts [exec.snd.concepts]")<*test-sender*, *test-env*> is modeled[.](#2.sentence-1) namespace std::execution {templateconcept [scope_token](#concept:scope_token "33.14.1 Execution scope concepts [exec.scope.concepts]") =[copyable](concepts.object#concept:copyable "18.6 Object concepts [concepts.object]") &&requires(const Token token) {{ token.try_associate() } -> [same_as](concept.same#concept:same_as "18.4.2 Concept same_­as [concept.same]"); { token.disassociate() } noexcept -> [same_as](concept.same#concept:same_as "18.4.2 Concept same_­as [concept.same]"); { token.wrap(declval<*test-sender*>()) } -> [sender_in](exec.snd.concepts#concept:sender_in "33.9.3 Sender concepts [exec.snd.concepts]")<*test-env*>; };} [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L7735) A type Token models [scope_token](#concept:scope_token "33.14.1 Execution scope concepts [exec.scope.concepts]") only if: - [(3.1)](#3.1) no exceptions are thrown from copy construction, move construction, copy assignment, or move assignment of objects of type Token; and - [(3.2)](#3.2) given an lvalue token of type (possibly const) Token, for all expressions sndr such thatdecltype(( sndr)) models [sender](exec.snd.concepts#concept:sender "33.9.3 Sender concepts [exec.snd.concepts]"): * [(3.2.1)](#3.2.1) token.wrap(sndr) is a valid expression, * [(3.2.2)](#3.2.2) decltype(token.wrap(sndr)) models [sender](exec.snd.concepts#concept:sender "33.9.3 Sender concepts [exec.snd.concepts]"), and * [(3.2.3)](#3.2.3) completion_signatures_of_t contains the same completion signatures as completion_signatures_of_t for all types E such that [sender_in](exec.snd.concepts#concept:sender_in "33.9.3 Sender concepts [exec.snd.concepts]") is modeled.