A opIndexUnary quiz
bearophile
bearophileHUGS at lycos.com
Tue Jan 1 19:52:19 PST 2013
Era Scarecrow:
> Well I see that you have opIndexUnary twice; According to the
> manual you wouldn't need as it would rewrite the code so you
> only need it once;
And as you have seen if you remove the useles opIndexRight the
program keeps compiling with no errors and keeps asserting at
run-time:
struct Foo {
int x;
alias this = x;
}
class Bar {
Foo[] data;
this() {
data.length = 10;
}
Foo opIndex(uint i) {
return data[i];
}
void opIndexUnary(string op)(uint i) if (op == "++") {
data[i]++;
}
}
void main() {
auto barfoo = new Bar;
++barfoo[3];
assert(barfoo.data[3] == 1);
barfoo[3]++;
assert(barfoo.data[3] == 2);
}
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list