"Andrei Alexandrescu" <seewebsiteforem...@erdani.org> wrote in message news:h5ttfi$cf...@digitalmars.com...
Lionello Lunesu wrote:

"Jeremie Pelletier" <jerem...@gmail.com> wrote in message news:h5sl4c$173...@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.

Reply via email to