On Wednesday, 3 April 2013 at 01:19:18 UTC, Zach the Mystic wrote:
On Tuesday, 2 April 2013 at 15:08:20 UTC, Namespace wrote:
On Saturday, 30 March 2013 at 12:00:32 UTC, Namespace wrote:
As far as I studied the code, something like @ref isn't possible, because ref is already a keyword. Except as Pseudo-property. But this is a combination of '@' and 'ref' so that both, '@ref' and '@ ref' would be valid.
I still like the idea of '&A'.

I have to disagree with me here.
Thanks to this thread (http://forum.dlang.org/thread/ohjdraaizvwiczifw...@forum.dlang.org) I know now that after the '@' can be an unlimited number of white spaces. Hence my previous speculation that I would have implemented something wrong is wrong. So is something like '@ref' possible and already implemented, as you can see here: https://github.com/Dgame/dmd/tree/rvalue_property

I think this is probably the end result of my little journey. Any objections?

'@ref' is actually my least favorite choice. Of all presented, my two favorites are

void func(ref& int a) {}

void func(@val ref int a) {}

Hara Kenji's comment about 'scope ref' also raises the issue of just how subtle is the difference between this proposed feature and what 'auto ref' does in templates. Correct me if I'm wrong, but 'ref&' is proposed to have the compiler create a temporary at the call site and pass it as a reference.

ref int func1(ref& int a) { return a; }

// Example:

int func2(ref int b) { return a; }
int x = func2(func1(3));

s/ref int b/ref int a/

Reply via email to