std::stop_callback<Callback>::stop_callback
< cpp | thread | stop callback
template<class C> explicit stop_callback( const std::stop_token& st, C&& cb ) noexcept(/*see below*/); |
(1) | (C++20 起) |
template<class C> explicit stop_callback( std::stop_token&& st, C&& cb ) noexcept(/*see below*/); |
(2) | (C++20 起) |
stop_callback( const stop_callback& ) = delete; |
(3) | (C++20 起) |
stop_callback( stop_callback& ) = delete; |
(4) | (C++20 起) |
构造新的 stop_callback
对象,保存并注册 cb
回调函数到给定的 std::stop_token 的关联状态中,为了之后若在关联的 std::stop_source 的关联停止状态上请求停止则调用
1) 对给定的
st
(复制),给定可调用回调函数 cb
构造 stop_callback
。2) 对给定的
st
(移动),给定可调用回调函数 cb
构造 stop_callback
。两个构造函数仅若 Callback
与 C
满足 std::constructible_from<Callback, C> 的 constructible_from 才参与重载决议。若 Callback
与 C
满足概念但不满足其语义要求,则行为未定义。
参数
st | - | 用于注册此 stop_callback 对象 std::stop_token 的对象
|
cb | - | 若请求停止则调用的函数类型 |
异常
1-2)
noexcept 规定:
任何构造函数初始化给定的回调到 noexcept(std::is_nothrow_constructible_v<Callback, C>)
stop_callback
对象中抛出的异常。注解
若对传入的 std::stop_token 为 st.stop_requested() == true ,则在构造函数返回前于当前线程调用回调函数。