Explicitly saying ref or out when invoking a function

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Aug 12 01:11:31 PDT 2009


Lionello Lunesu wrote:
> 
> "Jeremie Pelletier" <jeremiep at gmail.com> wrote in message 
> news:h5sl4c$1733$1 at digitalmars.com...
>> It's especially bad since if you modify the function prototype and 
>> change ref, you have all your calls to update too.
> 
> That must be the best argument to introduce repeating ref and out!
> 
> L.

// untested
struct Ref(T)
{
     private T* _data;
     this(ref T data) { _data = &data; }
     ref T get() { assert(_data); return *_data; }
     alias get this;
}
Ref!(T) byRef(ref T data)
{
     return Ref!(T)(data);
}

...

void fun(Ref!int rint) { ... }
...
int x;
fun(byRef(x));


Andrei



More information about the Digitalmars-d mailing list