Explicitly saying ref or out when invoking a function

Ary Borenszweig ary at esperanto.org.ar
Wed Aug 12 04:56:49 PDT 2009


Andrei Alexandrescu escribió:
> 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

Have you heard about standardization? ;-)

But yeah, there's the problem with functions in templated code... I 
don't know what to do with that...



More information about the Digitalmars-d mailing list