Skip to content

Commit fa3f23c

Browse files
committed
stop_token: stop_callback_for_t (#1384)
- stop_token: callback_type - stop_callback: Callback -> CallbackFn
1 parent e822b00 commit fa3f23c

File tree

8 files changed

+95
-27
lines changed

8 files changed

+95
-27
lines changed

reference/stop_token.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
| [`inplace_stop_token`](stop_token/inplace_stop_token.md.nolink) | インプレース停止トークン (class) | C++26 |
2525
| [`inplace_stop_source`](stop_token/inplace_stop_source.md.nolink) | インプレース停止要求を発生させるクラス (class) | C++26 |
2626
| [`inplace_stop_callback`](stop_token/inplace_stop_callback.md.nolink) | インプレース停止要求に応じて呼び出されるコールバック (class template) | C++26 |
27-
| [`stop_callback_for_t`](stop_token/stop_callback_for_t.md.nolink) | 停止トークンに対応するコールバック型を取得 (alias template) | C++26 |
27+
| [`stop_callback_for_t`](stop_token/stop_callback_for_t.md) | 対応するコールバック型を取得 (alias template) | C++26 |
2828

2929

3030
## バージョン

reference/stop_token/stop_callback.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
```cpp
88
namespace std {
9-
template<class Callback>
9+
template<class CallbackFn>
1010
class stop_callback;
1111
}
1212
```
@@ -17,29 +17,29 @@ namespace std {
1717
## メンバ関数
1818
1919
| 名前 | 説明 | 対応バージョン |
20-
|---------------------------------------------------|--------------------------------------------------------------------|-------|
20+
|------|------|-------|
2121
| [`(constructor)`](stop_callback/op_constructor.md)| コンストラクタ | C++20 |
2222
| [`(destructor)`](stop_callback/op_destructor.md) | デストラクタ | C++20 |
2323
| `operator=(const stop_callback&) = delete;` | 代入演算子 | C++20 |
2424
| `operator=(stop_callback&&) = delete;` | 代入演算子 | C++20 |
2525
2626
## メンバ型
2727
28-
| 名前 | 説明 | 対応バージョン |
29-
|-----------------|----------------|----------------|
30-
| `callback_type` | テンプレート引数`Callback`に指定した型| C++20 |
28+
| 名前 | 説明 | 対応バージョン |
29+
|------|------|-------|
30+
| `callback_type` | `CallbackFn` | C++20 |
3131
3232
## 推論補助
3333
3434
| 名前 | 説明 | 対応バージョン |
35-
|---------------------------------------------|------------------------------------|-------|
35+
|------|------|-------|
3636
| [`(deduction_guide)`](stop_callback/op_deduction_guide.md) | クラステンプレートの推論補助 | C++20 |
3737
3838
## 適格要件
39-
テンプレート引数の`Callback`は[`invocable`](/reference/concepts/invokable.md.nolink)と[`destructible`](/reference/concepts/destructible.md)制約を満たさなければならい。
39+
テンプレート引数の`CallbackFn`は[`invocable`](/reference/concepts/invokable.md.nolink)と[`destructible`](/reference/concepts/destructible.md)制約を満たさなければならい。
4040
4141
## 事前条件
42-
テンプレート引数の`Callback`は[`invocable`](/reference/concepts/invokable.md.nolink)と[`destructible`](/reference/concepts/destructible.md)制約を満たさなければならい。
42+
テンプレート引数の`CallbackFn`は[`invocable`](/reference/concepts/invokable.md.nolink)と[`destructible`](/reference/concepts/destructible.md)制約を満たさなければならい。
4343
4444
## 例
4545
```cpp example

reference/stop_token/stop_callback/op_constructor.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
```cpp
99
template<class C>
1010
explicit stop_callback(const stop_token& st, C&& cb)
11-
noexcept(is_nothrow_constructible_v<Callback, C>); // (1)
11+
noexcept(is_nothrow_constructible_v<CallbackFn, C>); // (1)
1212
template<class C>
1313
explicit stop_callback(stop_token&& st, C&& cb)
14-
noexcept(is_nothrow_constructible_v<Callback, C>); // (2)
14+
noexcept(is_nothrow_constructible_v<CallbackFn, C>); // (2)
1515

1616
stop_callback(const stop_callback&) = delete; // (3)
1717
stop_callback(stop_callback&&) = delete; // (4)
@@ -25,22 +25,22 @@ stop_callback(stop_callback&&) = delete; // (4)
2525
2626
2727
## 適格要件
28-
クラステンプレートのテンプレート引数`Callback`とコンストラクタのテンプレート引数`C`は[`constructible_from`](/reference/concepts/constructible_from.md)`<Callback, C>`制約を満たさなければならない。
28+
クラステンプレートのテンプレート引数`CallbackFn`とコンストラクタのテンプレート引数`C`は[`constructible_from`](/reference/concepts/constructible_from.md)`<CallbackFn, C>`制約を満たさなければならない。
2929
3030
3131
## 事前条件
32-
クラステンプレートのテンプレート引数`Callback`とコンストラクタのテンプレート引数`C`は[`constructible_from`](/reference/concepts/constructible_from.md)`<Callback, C>`制約を満たさなければならない。
32+
クラステンプレートのテンプレート引数`CallbackFn`とコンストラクタのテンプレート引数`C`は[`constructible_from`](/reference/concepts/constructible_from.md)`<CallbackFn, C>`制約を満たさなければならない。
3333
3434
3535
## 効果
36-
コンストラクタの引数に渡した`cb`を`std::forward<Callback>(cb)`で転送して、メンバ変数(仮に`callback`とする)を初期化する。
36+
コンストラクタの引数に渡した`cb`を`std::forward<CallbackFn>(cb)`で転送して、メンバ変数(仮に`callback`とする)を初期化する。
3737
38-
もし`st.`[`stop_requested()`](../stop_token/stop_requested.md) `==` `true` の場合は、コンストラクタを呼び出したスレッドの中で`std::forward<Callback>(callback)()`を評価し、コールバックを呼び出す。したがってこのコールバックの呼び出しはコンストラクタから処理が戻るより前に完了する。
38+
もし`st.`[`stop_requested()`](../stop_token/stop_requested.md) `==` `true` の場合は、コンストラクタを呼び出したスレッドの中で`std::forward<CallbackFn>(callback)()`を評価し、コールバックを呼び出す。したがってこのコールバックの呼び出しはコンストラクタから処理が戻るより前に完了する。
3939
40-
そうでない場合は、`st`が所有している停止状態への所有権を取得して停止状態を共有し、その停止状態に対する最初の[`request_stop()`](../stop_source/request_stop.md)の呼び出しで`std::forward<Callback>(callback)()`を評価するようなコールバックを登録する。
40+
そうでない場合は、`st`が所有している停止状態への所有権を取得して停止状態を共有し、その停止状態に対する最初の[`request_stop()`](../stop_source/request_stop.md)の呼び出しで`std::forward<CallbackFn>(callback)()`を評価するようなコールバックを登録する。
4141
`st`が停止状態を所有していない場合は何もしない。
4242
43-
もし`std::forward<Callback>(callback)()`の呼び出しが例外によって終了した場合は、[`std::terminate()`](/reference/exception/terminate.md)関数が呼び出され、プログラムが異常終了する。
43+
もし`std::forward<CallbackFn>(callback)()`の呼び出しが例外によって終了した場合は、[`std::terminate()`](/reference/exception/terminate.md)関数が呼び出され、プログラムが異常終了する。
4444
4545
4646
## 例外

reference/stop_token/stop_callback/op_deduction_guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
```cpp
88
namespace std {
9-
template <class Callback>
10-
stop_callback(stop_token, Callback) -> stop_callback<Callback>;
9+
template <class CallbackFn>
10+
stop_callback(stop_token, CallbackFn) -> stop_callback<CallbackFn>;
1111
}
1212
```
1313
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# stop_callback_for_t
2+
* stop_token[meta header]
3+
* std[meta namespace]
4+
* type-alias[meta id-type]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
namespace std {
9+
template<class T, class CallbackFn>
10+
using stop_callback_for_t = T::template callback_type<CallbackFn>;
11+
}
12+
```
13+
14+
## 概要
15+
16+
型`T`に対応する`CallbackFn`型のコールバック型を取得する。
17+
18+
19+
## バージョン
20+
### 言語
21+
- C++26
22+
23+
### 処理系
24+
- [Clang](/implementation.md#clang): ??
25+
- [GCC](/implementation.md#gcc): ??
26+
- [ICC](/implementation.md#icc): ??
27+
- [Visual C++](/implementation.md#visual_cpp): ??
28+
29+
30+
## 参照
31+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/stop_token/stop_token.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace std {
1313
## 概要
1414
`stop_token`クラスは、停止要求が作成されたかどうか、あるいは停止要求が作成されうるかどうかなど、停止状態を問い合わせるためのインターフェースを提供する。
1515
16-
[`stop_source`](stop_source.md)クラスの[`get_token()`](./stop_source/get_token.md)メンバ関数を呼び出すと、その`stop_source`クラスのオブジェクトと停止状態を共有する`stop_token`クラスのオブジェクトを構築できる。これによって、`stop_source`側から停止要求を作成したときに、この`stop_token`を通じて停止状態を問い合わせられるようになる。
16+
[`stop_source`](stop_source.md)クラスの[`get_token()`](stop_source/get_token.md)メンバ関数を呼び出すと、その`stop_source`クラスのオブジェクトと停止状態を共有する`stop_token`クラスのオブジェクトを構築できる。これによって、`stop_source`側から停止要求を作成したときに、この`stop_token`を通じて停止状態を問い合わせられるようになる。
1717
1818
また、`stop_token`クラスは以下のクラスでも利用される:
1919
@@ -26,20 +26,27 @@ namespace std {
2626
## メンバ関数
2727
2828
| 名前 | 説明 | 対応バージョン |
29-
|-------------------------------------------------|--------------------------------------------------------------------|-------|
29+
|------|------|-------|
3030
| [`(constructor)`](stop_token/op_constructor.md) | コンストラクタ | C++20 |
3131
| [`(destructor)`](stop_token/op_destructor.md) | デストラクタ | C++20 |
3232
| [`operator=`](stop_token/op_assign.md) | 代入演算子 | C++20 |
3333
| [`swap`](stop_token/swap.md) | 別の`stop_token`と交換する | C++20 |
3434
| [`stop_requested`](stop_token/stop_requested.md)| 停止要求が作成されたかどうかを取得する | C++20 |
3535
| [`stop_possible`](stop_token/stop_possible.md) | 停止要求が作成されうるかどうかを取得する | C++20 |
3636
37+
## メンバ型
38+
39+
| 名前 | 説明 | 対応バージョン |
40+
|------|------|-------|
41+
| [`callback_type`](stop_token/callback_type.md) | 対応するコールバック型 (alias template) | C++26 |
42+
3743
## 非メンバ関数
44+
3845
| 名前 | 説明 | 対応バージョン |
39-
|------------------------------------------------|---------------------------------------|-------|
40-
| [`operator==`](stop_token/op_equal.md) | 等値演算子 | C++20 |
41-
| [`operator!=`](stop_token/op_not_equal.md) | 非等値演算子 | C++20 |
42-
| [`swap`](stop_token/swap_free.md) | 2つの`stop_token`オブジェクトを入れ替える | C++20 |
46+
|------|------|-------|
47+
| [`operator==`](stop_token/op_equal.md) | 等値演算子 | C++20 |
48+
| [`operator!=`](stop_token/op_not_equal.md) | 非等値演算子 | C++20 |
49+
| [`swap`](stop_token/swap_free.md) | 2つの`stop_token`オブジェクトを入れ替える | C++20 |
4350
4451
4552
## 例
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# callback_type
2+
* stop_token[meta header]
3+
* std[meta namespace]
4+
* stop_token[meta class]
5+
* type-alias[meta id-type]
6+
* cpp26[meta cpp]
7+
8+
```cpp
9+
template<class CallbackFn>
10+
using callback_type = stop_callback<CallbackFn>;
11+
```
12+
* stop_callback[link ../stop_callback.md]
13+
14+
## 概要
15+
`stop_token`に対応するコールバック型。
16+
17+
18+
## バージョン
19+
### 言語
20+
- C++26
21+
22+
### 処理系
23+
- [GCC](/implementation.md#gcc): ??
24+
- [Clang](/implementation.md#clang): ??
25+
- [ICC](/implementation.md#icc): ??
26+
- [Visual C++](/implementation.md#visual_cpp): ??
27+
28+
29+
## 参照
30+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/stop_token/stoppable_token.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ concept stoppable-callback-for =
6868
```
6969
* invocable[link /reference/concepts/invocable.md]
7070
* constructible_from[link /reference/concepts/constructible_from.md]
71-
* stop_callback_for_t[link stop_callback_for_t.md.nolink]
71+
* stop_callback_for_t[link stop_callback_for_t.md]
7272

73-
説明用の`init`[`same_as`](/reference/concepts/same_as.md)`<decltype(init), Initializer>`を満たす式、型`SCB`[`stop_callback_for_t`](stop_callback_for_t.md.nolink)`<Token, CallbackFn>`とする。
73+
説明用の`init`[`same_as`](/reference/concepts/same_as.md)`<decltype(init), Initializer>`を満たす式、型`SCB`[`stop_callback_for_t`](stop_callback_for_t.md)`<Token, CallbackFn>`とする。
7474

7575
`stoppable-callback-for<CallbackFn, Token, Initializer>`のモデルとなるには、下記を満たすこと。
7676

0 commit comments

Comments
 (0)