On Sunday, 3 February 2013 at 17:46:00 UTC, Andrei Alexandrescu wrote:
On 2/3/13 10:35 AM, TommiT wrote:
On Sunday, 3 February 2013 at 08:16:08 UTC, Andrei Alexandrescu wrote:
Walter and I have had a discussion on how to finalize properties.

http://wiki.dlang.org/DIP23
[..]

What happens here?

struct S
{
int _n;

@property ref int prop()
{
return _n;
}
}

@property void prop(ref S s, int n)
{
s._n = 42;
}

void main()
{
S s;
s.prop = 10;
}

The member is chosen.

Andrei

What happens in these examples?

Example 1:

struct S
{
    int _n;

    @property ref const(int) prop() const
    {
        return _n;
    }
}

@property void prop(ref S s, int n)
{
    s._n = 42;
}

void main()
{
    S s;
    s.prop = 10;
}

--------------------------------------------

Example 2:

struct T
{
    int _n;

    @disable void opAssign(T rhs) { }
}

struct S
{
    T _t;

    @property ref T prop()
    {
        return _t;
    }
}

@property void prop(ref S s, T t)
{
    s._t._n = t._n;
}

void main()
{
    S s;
    s.prop = T.init;
}

Reply via email to