Files
2025-10-25 03:02:53 +03:00

65 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[stopcallback.inplace]
# 32 Concurrency support library [[thread]](./#thread)
## 32.3 Stop tokens [[thread.stoptoken]](thread.stoptoken#stopcallback.inplace)
### 32.3.10 Class template inplace_stop_callback [stopcallback.inplace]
#### [32.3.10.1](#general) General [[stopcallback.inplace.general]](stopcallback.inplace.general)
namespace std {template<class CallbackFn>class inplace_stop_callback {public:using callback_type = CallbackFn; // [[stopcallback.inplace.cons]](#cons "32.3.10.2Constructors and destructor"), constructors and destructortemplate<class Initializer>explicit inplace_stop_callback(inplace_stop_token st, Initializer&& init)noexcept(is_nothrow_constructible_v<CallbackFn, Initializer>); ~inplace_stop_callback();
inplace_stop_callback(inplace_stop_callback&&) = delete;
inplace_stop_callback(const inplace_stop_callback&) = delete;
inplace_stop_callback& operator=(inplace_stop_callback&&) = delete;
inplace_stop_callback& operator=(const inplace_stop_callback&) = delete; private: CallbackFn *callback-fn*; // *exposition only*}; template<class CallbackFn> inplace_stop_callback(inplace_stop_token, CallbackFn)-> inplace_stop_callback<CallbackFn>;}
[1](#general-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1352)
*Mandates*: CallbackFn satisfies both[invocable](concept.invocable#concept:invocable "18.7.2Concept invocable[concept.invocable]") and [destructible](concept.destructible#concept:destructible "18.4.10Concept destructible[concept.destructible]")[.](#general-1.sentence-1)
[2](#general-2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1357)
*Remarks*: For a type Initializer, if[*stoppable-callback-for*](stoptoken.concepts#concept:stoppable-callback-for "32.3.3Stop token concepts[stoptoken.concepts]")<CallbackFn, inplace_stop_token, Initializer> is satisfied, then[*stoppable-callback-for*](stoptoken.concepts#concept:stoppable-callback-for "32.3.3Stop token concepts[stoptoken.concepts]")<CallbackFn, inplace_stop_token, Initializer> is modeled[.](#general-2.sentence-1)
For an inplace_stop_callback<CallbackFn> object,
the exposition-only *callback-fn* member is
its associated callback function ([[stoptoken.concepts]](stoptoken.concepts "32.3.3Stop token concepts"))[.](#general-2.sentence-2)
#### [32.3.10.2](#cons) Constructors and destructor [[stopcallback.inplace.cons]](stopcallback.inplace.cons)
[🔗](#cons-itemdecl:1)
`template<class Initializer>
explicit inplace_stop_callback(inplace_stop_token st, Initializer&& init)
noexcept(is_nothrow_constructible_v<CallbackFn, Initializer>);
`
[1](#cons-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1381)
*Constraints*: [constructible_from](concept.constructible#concept:constructible_from "18.4.11Concept constructible_­from[concept.constructible]")<CallbackFn, Initializer> is satisfied[.](#cons-1.sentence-1)
[2](#cons-2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1385)
*Effects*: Initializes *callback-fn* with std::forward<Initializer>(init) and executes a stoppable callback registration ([[stoptoken.concepts]](stoptoken.concepts "32.3.3Stop token concepts"))[.](#cons-2.sentence-1)
[🔗](#cons-itemdecl:2)
`~inplace_stop_callback();
`
[3](#cons-3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L1396)
*Effects*: Executes a stoppable callback deregistration ([[stoptoken.concepts]](stoptoken.concepts "32.3.3Stop token concepts"))[.](#cons-3.sentence-1)