考虑以下代码:
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
。但是函数签名隐藏了可变声明。
如何 decalre 指向可变成员的指针以编译此代码?如果不可能,请链接到标准 C++。