Explicitly saying ref or out when invoking a function

Lionello Lunesu lionello at lunesu.remove.com
Wed Aug 12 01:59:34 PDT 2009


"Andrei Alexandrescu" <SeeWebsiteForEmail at erdani.org> wrote in message 
news:h5ttfi$cf3$1 at digitalmars.com...
> 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, you bring the compiler vs library discussion to a whole new level :)

We can add "ref" to the list of keywords that can be freed up.

L. 




More information about the Digitalmars-d mailing list