重新解释从指针向量转换为const指针向量安全吗?

use*_*535 9 c++ const vector reinterpret-cast

这种转换类型是否安全?

vector<int*> a;
const vector<const int*>& b = reinterpret_cast<const vector<const int*>&>(a);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,静态转换显然不起作用,因为模板参数正在改变.但是通过这个重新解释演员,我只是将constness添加到基本相同的类型.那么这对所有实际目的来说都是安全的吗?

Mik*_*our 7

就像reinterpret_cast将引用转换为不相关的类型一样,它会给出未定义的行为,因此除非你将"safe"定义为"在我的编译器上工作",否则不安全.

  • @ user1353535:不,库实现可以自由地专门化模板,但它喜欢.不需要不同的专业化与布局兼容. (3认同)