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