Array(T)1 struct Array(T)
2 {
3     private struct Payload
4     {
5         size_t _capacity;
6         T[] _payload;
7 
8         ~this()
9         {
10         }
11 
12         this(this)
13         {
14         }
15     }
16     private alias RefCounted!(Payload) Data;
17     private Data _data;
18 
19     bool opEquals(ref const Array rhs) const
20     {
21         return true;
22     }
23 }
24 
25 
BinaryHeap(Store)26 struct BinaryHeap(Store)
27 {
28     private static struct Data
29     {
30         Store _store;
31         size_t _length;
32     }
33     private RefCounted!(Data) _payload;
34 }
35 
36 
RefCounted(T)37 struct RefCounted(T)
38 {
39     struct RefCountedStore
40     {
41         private struct Impl
42         {
43             T _payload;
44             size_t _count;
45         }
46 
47         private Impl* _store;
48 
49     }
50     RefCountedStore _refCounted;
51 
52     this(this)
53     {
54     }
55 
56     ~this()
57     {
58         .destroy(_refCounted._store._payload);
59     }
60 
61     void opAssign(typeof(this) rhs)
62     {
63     }
64 
65     void opAssign(T rhs)
66     {
67         typeid(T).destroy(&rhs);
68     }
69 }
70