On Wednesday, 23 January 2013 at 19:18:09 UTC, Johannes Pfau wrote:
int DG() {return 42};
int delegate() getDG() {return &DG};

auto dg = getDG; //OK
auto ??? = getDG();

The last line could be a call to getDG with optional parenthesis,
so ??? = DG. Or it could be a call to getDG without optional
parenthesis and a call to the returned DG, so ??? = 42.

If getDG is a @property, ??? == 42, because getDG() is rewritten into (getDG())() - parens there would ALWAYS mean "call the return value", so any @property is indistinguishable from its return value. (if we get @property like I want)

Without @property, it'd return DG because while parenthesis are optional, if they are present, they always apply to the preceding thing directly; getDG == getDG() in all cases. (This is the status quo, which I'd retain)


The type system will help catch errors here better than the syntax.

Reply via email to