On Wednesday, 13 April 2022 at 20:47:33 UTC, JG wrote:
Hi,
I would have thought that RefCounted!(T,
RefCountedAutoInitialize.no) is to be used in place T* when I
want reference counting instead of the usual garbage collection
(or manual allocation). Perhaps this is wrong?
[...]
In case some one has a similar problem, try:
https://code.dlang.org/packages/automem
```
import std.stdio;
import std.experimental.allocator.mallocator;
import std.experimental.allocator;
import automem;
struct Node(T) {
RefCounted!(Node!T) next;
T val;
}
struct List(T) {
RefCounted!(Node!T) head;
bool empty() { return head == null; }
T front() { return head.val; }
void popFront() { head = head.next; }
typeof(this) save() { return typeof(this)(head); }
void insert(T x) {
head = RefCounted!(Node!T)(head,x);
}
}
void main() {
theAllocator = allocatorObject(Mallocator.instance);
List!long l;
l.insert(5);
l.insert(4);
l.insert(3);
l.insert(2);
l.insert(1);
writeln(l);
}
```