not quite the same. none of my pointers or variables are const, just the method. what I was getting at is how it seems odd to have a const method change a member of the class it belongs to, which totally circumvents the purpose of it being const.
It doesn't actually change a member. It changes a parameter, which just happens to be a member.
This behavior is perfectly consistent. In order to do fum.go( &fum.bar );
fum has to be a non-const object. If it's not, the compiler will reject the call.
In other words, when passed a pointer to a member, foo::go() behaves exactly like a non-const function would.