Skip to content

Commit 8e854b8

Browse files
committed
promiseデストラクタが例外を格納するコード例を作成 #1270
1 parent eddd595 commit 8e854b8

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

reference/future/promise/op_destructor.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,44 @@
1818
2. 共有状態を解放する。
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
## バージョン

0 commit comments

Comments
 (0)