00
06 #include "digraph.h"
07 #include <memory>
08 #include <iostream>
09
10 using namespace std;
11
12 unique_ptr<digraph_t> create_graph()
13 {
14 auto g = make_unique<digraph_t>(10);
16 g->add_edge({0,0,1});
17 g->add_edge({1,1,2});
18
19 auto gg = std::move(g);
21 gg->add_edge({2,2,3});
22 gg->add_edge({3,3,0});
23
24 return gg;}
26
27
28 int main()
29 {
30 auto g1 = create_graph();
31
32 auto g2 = g1;
34 weak_ptr<digraph_t> wg;
36 {
37 shared_ptr<digraph_t> g3 = create_graph();
38
39 auto g4 = g3;
41 wg = g4;
43 cout << g3.use_count() << endl;
44
45 g4.reset();
46
47 cout << g3.use_count() << endl;
48
49 {
50 auto g5 = wg.lock();
52 cout << g3.use_count() << endl;
53 }
54
55 cout << g3.use_count() << endl;
56 }
57
58 cout << (wg.expired() ? "expired" : "alive") << endl;
60 return 0;
61 }