Property discussion wrap-up

Timon Gehr timon.gehr at gmx.ch
Thu Jan 31 01:39:05 PST 2013


On 01/31/2013 03:10 AM, TommiT wrote:
> I think my former unholy union of namespace and variable is just too
> confusing to reason about, so here's my new way of seeing effectively
> the same thing, but with simpler semantics:
>
> Keyword property is like the keyword struct, except:
>
> 1) properties can't have data members
> 2) properties can't have static member functions
> 3) properties can't have constructors/destructors
> 4) property instances always point to null
> 5) property instances' size is 0
> 6) if a property is declared inside a class/struct, all its
>     member functions receive an implicit 'outer' variable
>     which references the encapsulating object. Whether or
>     not 'outer' is const ref or ref depends only on the
>     constness of the encapsulating object.
>
> Example:
>...
> Usage:
>
> T t;
> int v = t.myProp; // lowers to t.myProp.getIt due to alias this
> t.myProp = 41;
> t.myProp += 1;
> assert(t.myProp.isCorrect());
> assert(&t.myProp == null);
> assert(T.PropType.sizeof == 0);

auto v = t.myProp; // ?


More information about the Digitalmars-d mailing list