2013/1/25 Jonathan M Davis <jmdavisProg@gmx.com>
On Thursday, January 24, 2013 22:24:58 Adam D. Ruppe wrote:
> On Thursday, 24 January 2013 at 21:09:39 UTC, Adam Wilson wrote:
> > The problem with @property isn't @property, it's D's
> > insistence on optional parens.
>
> No, this isn't a problem; function call syntax has nothing
> whatsoever to do with @property because a property is NOT
> logically a function!

D's insistance on optional parens _does_ cause problems with functions that
return delegates, but @property itself isn't really affected by optional
parens save for the visual ambiguity caused by optional parens.
 
I think that the "optional parentheses" feature for normal functions should always work in _shallowly_. Even if a function returns some callable object, "optional parentheses" should not applied to the return object recursively.

That means:
void delegate() foo() { ... }
void main() {
  auto x = foo();  // typeof(x) == void delegate()
  auto y = foo;    // typeof(y) == void delegate()
}

Kenji Hara