C++ · Intermediário · Inglês · Técnico
mutable
Especificador que permite modificar um membro de dados mesmo dentro de uma função membro const ou de um objeto const. Também permite alterar capturas por valor dentro de uma lambda.
Onde usar
Usado em caches, contadores de acesso e mutex membros de classes cujos getters são const. Em review, sinaliza que o estado lógico do objeto não muda, só o físico.
Em código
struct Cache {
mutable int hits = 0;
int get(int k) const {
++hits; // ok, mesmo sendo const
return k * 2;
}
};Exemplos
Mark the mutex as mutable so the getter can stay const.
Marque o mutex como mutable para o getter continuar const.
The cache is mutable because it doesn't change the logical state.
O cache é mutable porque não muda o estado lógico.
Cuidado
Não é um jeito de burlar const em qualquer coisa; abusar dele quebra a promessa de que funções const podem ser chamadas de várias threads sem sincronização.
Antônimos
const
Origem
Do inglês mutable, mutável.