Bypassing the const promise
    Tomek Sowiñski 
    tomeksowi.getridof at this.gmail.and.com.that
       
    Thu Nov 19 10:48:39 PST 2009
    
    
  
const on a function forbids changing members:
class Wrong {
    int a;
    void foo() const {
        a = 4;
    }
}
The above rightly doesn't compile. But with a little twist...
class A {
    int a;
    void foo(ref int i) const {
        i = 4;
    }
    void foo() const {
        foo(a);
    }
}
void main() {
    auto a = new A;
    a.foo;
    assert(a.a == 4);
}
... I bypass the const promise on a function (two of them in fact). No casting, no evil stuff.
Is this a compiler bug or feature?
Tomek
    
    
More information about the Digitalmars-d-learn
mailing list