On Thursday, 21 November 2013 at 13:28:01 UTC, Timon Gehr wrote:
On 11/21/2013 02:04 PM, John Colvin wrote:


3) properties decay to normal functions when they have their address taken

No, why?

Sorry, I forgot to add:
5) parenthesis are enforced for all calls on all callables other than functions, including function pointers and delegates.

In combination with 3 this prevents any ambiguity when dealing with addresses of functions. Otherwise they become impossible to manipulate as they would evaluate to their result anywhere they're mentioned in code. Some examples of things working how I suggest:

@property auto f() { return 3; }
auto p = &f;
auto q = p;   //q is address of f
auto r = q(); //r is 3

auto g() { return &f; }

auto a = g(); //a is address of f
auto b = g;
assert(a is b);

@property auto z() { return &f; }
auto c = z; //c is address of f

Reply via email to