1 | | Если убрать из упавшего теста лишнее, там остаётся вот это: |
2 | | |
3 | | |
4 | | {{{#!c++ |
5 | | cptr_t * p0 = new cptr_t(new CntD("obj0")); |
6 | | cptr_t * p2 = new cptr_t(*p0); |
7 | | |
8 | | cptr_t * p1 = new cptr_t(new Cnt("obj1")); |
9 | | cptr_t * p6 = new cptr_t(*p1); |
10 | | *p1 = *p6; |
11 | | delete p6; p6 = nullptr; |
12 | | p1->swap(*p0); |
13 | | |
14 | | assert(true && (*p1).unique()); |
15 | | }}} |
16 | | |
17 | | |
18 | | Перед вызовом swap должна получаться такая структура связей linked_ptr: |
19 | | |
20 | | |
21 | | {{{ |
22 | | p0 ←→ p2 |
23 | | p1 |
24 | | }}} |
25 | | |
26 | | |
27 | | Насколько я понимаю, после него должно быть |
28 | | |
29 | | |
30 | | {{{ |
31 | | p1 ←→ p2 |
32 | | p0 |
33 | | }}} |
34 | | |
35 | | |
36 | | то есть непонятно, почему ожидается `(*p1).unique()`. Не могли бы вы пояснить? |
| 1 | [deleted] |