Lionello Lunesu wrote:
"Andrei Alexandrescu" <[email protected]> wrote in message
news:[email protected]...
Lionello Lunesu wrote:
"Jeremie Pelletier" <[email protected]> wrote in message
news:[email protected]...
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.
Good point, but actually ref can't be freed, because it would fall prey
to infinite regression: if there was no ref keyword, how would you pass
by reference the argument to the byRef function?
Andrei