Рассмотрим следующий код:Как создать указатель-to-mutable-member?
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>();
}
};
Компилятор генерирует сообщение об ошибке. Дело в том, что член m
изменен, поэтому разрешено изменять m
. Но подпись функции скрывает изменчивое объявление.
Как преобразовать указатель-to-mutable-член для преобразования этого кода? Если это невозможно, обратитесь к стандарту C++.
Очень хорошо .. Обходным решением является совершенный! –