C ++ const_cast gcc 8.2.1 -Wignored-qualifiers错误?

时间:2018-12-18 23:54:32

标签: c++ gcc gcc-warning gcc8

以下程序使用gcc 8.2.1生成此代码:

警告:强制类型转换结果类型忽略类型限定符[-Wignored-qualifiers] 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 -Wignored-qualifiers test.cc

据我对const_cast的理解,这不应发出警告。有人可以验证吗?

1 个答案:

答案 0 :(得分:3)

我认为您误解了警告。

这与缺少const无关:

const_cast<      int * const>(ptr)
//         const  

相反,这里是关于const的存在:

const_cast<int * const>(ptr)
//               ^~~~~

这里const的作用绝对为零,可以删除,这就是警告的意思。