Array(T)1struct 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)26struct 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)37struct 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