# 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` 。
3-4) `stop_callback` 既非可复制构造 (CopyConstructible) 亦非可移动构造 (MoveConstructible) 。

两个构造函数仅若 `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 ，则在构造函数返回前于当前线程调用回调函数。