4

考虑以下 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';
}

似乎有效,但它肯定安全吗?

我只是在修改一个mutable字段,但是完全剥离了它的const上下文让我感到紧张。

4

1 回答 1

8

这是安全的,但也是不必要的。因为mutablet.x已经是类型了int&如果演员表被完全删除,您的示例程序可以正常工作。

于 2012-11-19T14:54:40.083 回答