Si consideri il seguente codice:Come creare un membro puntatore-mutabile?
struct Foo
{
mutable int m;
template<int Foo::* member>
void change_member() const {
this->*member = 12; // Error: you cannot assign to a variable that is const
}
void g() const {
change_member<&Foo::m>();
}
};
compilatore genera un messaggio di errore. Il fatto è che il membro m
è modificabile, quindi è consentito modificare m
. Ma la firma della funzione nasconde la dichiarazione mutabile.
Come decalificare il puntatore al membro mutabile per compilare questo codice? Se è impossibile, collegarsi a Standard C++.
Molto buono .. La soluzione è perfetta! –