On Sunday, 5 August 2018 at 20:57:32 UTC, aliak wrote:
On Sunday, 5 August 2018 at 20:10:49 UTC, Kamil Koczurek wrote:
Is there a way to keep track of objects without owning them? That is, could I have a smart pointer that behaves somewhat like this:

WeakPtr!Class wptr = getSomeInstance();
auto obj = wptr.peek; //[1]
if(obj !is null) {
  obj.stuff();
}

[1]: If wptr points to something that is still reachable from somewhere else (and wasn't yet marked for collection by GC), .peek would return a normal reference of type Class. OTOH, when no active reference is present it should return null.

Not sure if there's anything in the language or standard library, but there this:

https://github.com/w0rp/dstruct/blob/master/source/dstruct/weak_reference.d

Which admittedly I have not tested.

Not exactly what I want, in my case the pointer should become null when all other instances go out of reach, not when they're collected, which isn't really predictable in D AFAIK. I can't base logic of my program on this.

Still interesting though, I'll look into its implementation and docs on core.memory, maybe I'll manage to implement it by myself.

Reply via email to