The classic example (as mentioned in other answers) and the only situation I have seen the mutable
keyword used in so far, is for caching the result of a complicated Get
method, where the cache is implemented as a data member of the class and not as a static variable in the method (for reasons of sharing between several functions or plain cleanliness).
In general, the alternatives to using the mutable
keyword are usually a static variable in the method or the const_cast
trick.
Another detailed explanation is in here.