On Thursday, 26 March 2015 at 04:57:55 UTC, ketmar wrote:
On Tue, 24 Mar 2015 16:49:01 +0000, Nicolas Sicard wrote:

I don't know if this is a bug or expected behaviour. The struct is mutable, assignable and pre-increment operator works. But post-increment
doesn't compile because of the immutable member.

--
struct S {
     int i;
     immutable(Object) o;

     S opUnary(string op)() { return this; }
     void opAssign(S other) {}
}

void main()
{
     S s, t;

t = s; // OK ++s; // OK s++; // Error: cannot modify struct s S
     with immutable members
}
---

by the way. do you know that you still CAN overload postincrement operation? yes, the code is still here, and it works... somethimes. ;-)

There's might be a bug anyway because even with an alias this:
---
struct S
{
    int i;
    alias i this;
    immutable(Object) o;

    S opUnary(string op)() { return this; }
    void opAssign(S other) {}
}

void main()
{
    S s, t;
    auto j = s.i++; // OK
    auto i = s++; // OUCH, but we expect S.i...
}
---

Reply via email to