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