我想知道下面是不确定的行为这是const_cast未定义的行为?
// Case 1:
int *p = 0;
int const *q = *const_cast<int const* const*>(&p);
// Case 2: (I think this is the same)
int *p = 0;
int const *const *pp = &p;
int const *q = *pp;
通过读取int*
就好像它是一个int const*
这个不确定的行为?我认为这是未定义的行为,但我以前认为一般只添加const
是安全的,所以我不确定。
你在问我们! :-)作为一个利益的问题,你有这样的真实世界的用例吗?和你一样,我一直认为增加常量不能破坏任何东西。 – 2011-05-11 20:06:24
@unapersson啊我刚刚读了最后一个C++ 0x规范,结果证明它有答案!我今天正在和我的同事讨论这个问题,他为“T *”添加了“const”作为interator适配器,并遇到了一个问题,要求进行这种隐式转换。 – 2011-05-11 20:08:12
我觉得这很好,我在这里看不到任何危险。 – 2011-05-11 20:10:07