While striving for const-correctness, I often find myself writing code such as this
class Bar; class Foo { public: const Bar* bar() const { /* code that gets
My personal feeling is that if you are doing this a lot, there is something a bit suspect in your design. On the occasions I have had to do something similar, I've usually made the thing being accessed by the methods mutable.