下面的节目是gcc 8.2.1制作的:
警告:在强制转换结果类型上忽略的类型限定符类型-W忽略-限定符int * const ptrCast = const_cast(ptr);
int main() {
int i = 0;
const int * const ptr = &i;
int * const ptrCast = const_cast<int * const>(ptr);
return *ptrCast;
}
编译为: gcc -我们忽略了-限定符test.cc
根据我对const_cast的理解,这不应该发出警告。有人能证实这一点吗?
发布于 2018-12-19 00:02:21
我想你误解了警告。
这与const
的缺乏无关:
const_cast< int * const>(ptr)
// const
相反,它是关于const
在这里的存在:
const_cast<int * const>(ptr)
// ^~~~~
在这里,const
具有绝对的零效果,并且可以被删除,这就是警告的意思。
https://stackoverflow.com/questions/53842773
复制相似问题