Имеет ли ключевое слово mutable какую-либо цель, кроме возможности изменения переменной с помощью const-функции?
Некоторое время назад я наткнулся на некоторый код, который помечал переменную-член класса с помощьюmutable
ключевое слово. Насколько я вижу, это просто позволяет вам изменить переменную вconst
метод:
<code>class Foo { private: mutable bool done_; public: void doSomething() const { ...; done_ = true; } }; </code>
Это единственное использование этого ключевого слова или это больше, чем кажется на первый взгляд? С тех пор я использовал эту технику в классе, отмечаяboost::mutex
как изменяемое разрешениеconst
функции для его блокировки по соображениям безопасности потоков, но, если честно, это похоже на хак.