is this a bug? opUnary!"++" Error: var has no effect

Zach the Mystic reachzachatgooglesmailservice at dot.com
Wed Feb 8 13:48:09 PST 2012


My goal is to be able to overload the "++" operator transparently to the 
code, but I can't.

import std.stdio;

struct Arc {
    int I = 0;
    // This is void, but the error appears under all return types
    void opUnary(string op)() if( op == "++" ) {
       ++I;
    }
}

struct HasArc {
     Arc myArc;
}

void main() {
    HasArc has;
    writefln(" Arc.I = %s", has.myArc.I); // Arc.I = 0

    has.myArc++; // Error: var has no effect in expression (__pitmp1481)

    // Okay, try this instead:
    auto UselessVar = has.myArc++; // Works fine

    writefln(" Arc.I = %s", has.myArc.I); // Arc.I = 1
}

Obviously the expression has an effect. Bug? If not, what is the right 
way to have the "++" operator pass that error test?

Thanks, Zach


More information about the Digitalmars-d-learn mailing list