考虑以下C ++ 03程序:
#include <iostream>
struct T
{
mutable int x;
T() : x(0) {}
};
void bar(int& x)
{
x = 42;
}
void foo(const T& t)
{
bar(const_cast<int&>(t.x));
}
int main()
{
T t;
foo(t);
std::cout << t.x << '\n';
}
它appears to work,但肯定是安全的吗?
我只是在修改mutable
字段,但剥离了它的const
字段完全让我感到紧张。
答案 0 :(得分:8)
这是安全的,但也是不必要的。由于mutable
,t.x
已经是int&
类型。您的示例程序works fine if the cast is removed entirely。