File tree Expand file tree Collapse file tree 1 file changed +35
-2
lines changed
Expand file tree Collapse file tree 1 file changed +35
-2
lines changed Original file line number Diff line number Diff line change 18182 . 共有状態を解放する。
1919
2020## 例
21- ``` cpp
21+ ``` cpp example
22+ #include < iostream>
23+ #include < future>
24+ #include < thread>
25+ #include < utility>
26+
27+ void calc (std::promise<int > p)
28+ {
29+ // 通常行う p.set_value() をしなかったとする
30+
31+ // ここで promise のデストラクタが例外オブジェクトを書き込む
32+ }
33+
34+ int main()
35+ {
36+ std::promise<int > p;
37+ std::future<int > f = p.get_future();
38+
39+ std::thread t(calc, std::move(p));
40+
41+ try {
42+ std::cout << f.get() << std::endl; // 上で書き込まれた例外が送出される
43+ }
44+ catch (std::future_error& e) {
45+ std::cout << e.what() << std::endl;
46+ }
47+
48+ t.join();
49+ }
2250```
51+ * std::future[link /reference/future/future.md]
52+ * p.get_future()[link get_future.md]
53+ * std::move[link /reference/utility/move.md]
54+ * f.get()[link /reference/future/future/get.md]
2355
24- ### 出力
56+ ### 出力例
2557```
58+ std::future_error: Broken promise
2659```
2760
2861## バージョン
You can’t perform that action at this time.
0 commit comments