jjzjj

constify

全部标签

c++ - "constify" `std::pair` 的字段是否可以不被黑客攻击?

在C++中,编译如下代码:std::pairx;static_cast*>(&x);报错:error:invalidstatic_castfromtype‘std::pair*’totype‘std::pair*’我或多或少理解为什么会这样,因为在模板参数列表中对类型进行cv限定原则上可以给出“不兼容”的结果。即使在这种情况下它不知道,编译器也无法知道。无论如何,是否有一种非hackish的方式来执行此转换?我对使用reinterpret_cast持谨慎态度对于我之前遇到过的类型双关问题。另外,我不能使用临时变量,因为这是对性能至关重要的代码。编辑:这就是我正在做的。我正在实现与std

c++ - 在 C++ 中进行 'constify' 操作有意义吗?

在C/C++中使用“constify”操作使变量成为const是否有意义?这是一个可能有用的例子,显然我们不想在第一行声明它const:std::vectorv;v.push_back(5);constifyv;//nowit'sconst目前,如果没有这种可能性,您必须引入另一个变量才能获得相同的效果:std::vectorv0;v0.push_back(5);conststd::vector&v=v0;这更令人困惑,因为它在作用域中添加了一个新名称,您需要将其设为引用以避免复制整个vector(或使用swap?)。 最佳答案 坦