次のコードを検討してください。
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
です。しかし、関数シグネチャは変更可能な宣言を隠しています。
このコードをコンパイルするためにポインターから可変メンバーへのデカルを行う方法は? それが不可能な場合は、標準 C++ にリンクしてください。