On Wednesday, 13 November 2019 at 15:30:33 UTC, Dukc wrote:

I'm not 100% sure what managed pointers mean -Are they so that you can't pass them to unregistered memory? A library solution would likely do -wrap the pointer in a struct and make it @system to extract it's pointer as "raw". So you cannot put it to C-allocated arrays without type casting, which you probably don't do accidently.


Best example is probably managed C++, an MS extension to C++ which is now deprecated. However, it server as an interesting example where MS extended C++ with a ^gc type.

https://en.wikipedia.org/wiki/Managed_Extensions_for_C%2B%2B

The ^gc type can actually be anything, raw pointer, reference counted or any fat pointer of choice. The benefit with this is that it doesn't intrude on C++ classical raw pointers, they are kept the same without any restrictions. GC algorithm is easily swappable like with Nim.

The D class is sort of a fat pointer but it only applies for classes, it would be nice to extend this to any memory as well (Yes you can GC allocate anything but then you get a raw pointer without the type distinction that it is a GC allocated object).

Reply via email to