I have thought in long term that, in D, "proerty" is just a syntactic rerwiting rule of  function call. It is much reasonable abstraction to me.

So, using __trait is overkill.

Kenji Hara

2013/02/05 0:45 "Timon Gehr" <timon.gehr@gmx.ch>:
On 02/04/2013 04:08 PM, kenji hara wrote:
2013/2/4 Timon Gehr <timon.gehr@gmx.ch <mailto:timon.gehr@gmx.ch>>

    On 02/04/2013 03:38 PM, kenji hara wrote:

        I think this is necessary feature for the D's function and property
        semantics.


    Why?


Because, "property" is one of D-specific feature.

In D, "property" is directly translated to function call. So, we should
get balance between two requirements:
1. property should be treated as its returned type.
2. property should be distinguished from raw field. (For example,
serialization library should recognize it)


This is what __traits are for.

Address expression is _only_one_ built-in feature to make a callable
object from function symbol.

Property symbols are not to be treated like function symbols syntactically. That is the point. Otherwise we may as well get rid of properties.

So this "special feature" is enough reasonable to me.

...

"special features" are usually not reasonable.