How far do you go with const?  Do you just make functions const when necessary or do you go the whole hog and use it everywhere?  For example, imag         
        
->* or .* operators, it's a must.It prevents you from writing something like
void foo(Bar *p) { if (++p->*member > 0) { ... } }
which I almost did right now, and which probably doesn't do what you intend.
What I intended to say was
void foo(Bar *p) { if (++(p->*member) > 0) { ... } }
and if I had put a const in between Bar * and p, the compiler would have told me that.