cast ref pointer

Luís Marques luis at luismarques.eu
Thu Jan 18 15:25:38 UTC 2018


This works, obviously (i.e. it prints 42):

     void foo(ref int* a)
     {
         static int j = 42;
         a = &j;
     }

     void bar(int* ptr)
     {
         foo(ptr);
         writeln(*ptr);
     }

     void main()
     {
         int i = 7;
         bar(&i);
     }

Unfortunately, if bar for some reason receives a void* pointer 
(e.g. C callback) this doesn't work:

     void bar(void* ptr)
     {
         foo(cast(int*) ptr); // error
         writeln(*cast(int*) *ptr);
     }

I think the underlying idea is sound (use ptr as an lvalue, but 
with int* type), but since you can't cast(ref int*), I don't know 
how to express it in D code.


More information about the Digitalmars-d-learn mailing list