diff --git a/execution.bs b/execution.bs index fbd2dc8..e2e624e 100644 --- a/execution.bs +++ b/execution.bs @@ -5007,6 +5007,25 @@ enum class forward_progress_guarantee { [*Note:* The `transfer` algorithm is unique in that it ignores the execution domain of its predecessor, using only its destination scheduler to select a customization. *--end note*] + 11.
+ template<callable Fun> + requires is_nothrow_move_constructible_v<Fun> + struct emplace-construct { // exposition only + Fun fun; // exposition only + using type = call-result-t<Fun>; + + constexpr operator type() && noexcept(nothrow-callable<Fun>) { + return std::move(fun)(); + } + + constexpr type operator()() && noexcept(nothrow-callable<Fun>) { + return std::move(fun)(); + } + }; ++ + 1. `emplace-construct` is used to emplace + non-movable types into containers like `tuple`, `optional`, and `variant`. 11.
template<class... T>