В C++ есть много возможностей, которые редко используются. Одна из таких возможностей - использование ключевого слова mutable для указания изменяемых данных класса или структуры.

Ключевое слово mutable используется вместе с членами класса в качестве дополнительного модификатора типа :

class HashTable
{
    ...
private :
     mutable std::map<int, string> _cache;
};

mutable показывает, что член класса является изменяемым, и его можно изменять в функциях, у которых указан модификатор const, а также у константных объектов.

Следующий пример полностью рабочий :

#include <iostream>
using std::cout;
struct foo  
{
    foo () : a(0) {}
    void change () const { a++; }
    mutable int a;
};

int main ()
{
    const foo f;
    f.change();
    f.a = 100;
    cout << f.a;
}

Это ключевое слово может использоваться в классах, где, например, есть кэш, который может потребоваться обновлять в каждой функции вне зависимости от требования константности объекта. Еще пример - при ленивой инициализации данных класса(сигнализирующий флаг будет изменяемым, mutable).