On Saturday, 15 October 2016 at 17:11:28 UTC, Andrei Alexandrescu wrote:
Seems there'd be quite some annotational overhead.

In the case of a C++-style vector it's just a matter of changing

    E* _ptr;                // non-GC-allocated store pointer

to

    @nogc E* _ptr;          // GC-allocated store pointer

and then updating the relevant trait, such as `hasIndirections` or/and `hasAliasing`, to respect this attribute.

That doesn't seem to hard, right? Or am I missing something?

BTW: Should I use

https://dlang.org/phobos/std_traits.html#hasIndirections

or

https://dlang.org/phobos/std_traits.html#hasAliasing

ẁhen checking if I need to call `GC.addRange` and `GC.removeRange`?

The difference is whether we should include immutable indirections or not.

Reply via email to