const_casting是一个可变字段安全吗?

时间:2012-11-19 14:51:58

标签: c++ const c++03

考虑以下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字段完全让我感到紧张。

1 个答案:

答案 0 :(得分:8)

这是安全的,但也是不必要的。由于mutablet.x已经是int&类型。您的示例程序works fine if the cast is removed entirely