Я знаю, что вы можете использовать const_cast для приведения a const к не const.
Но что вы должны использовать, если хотите отбрасывать не const до const?
Ответ 1
const_cast может использоваться для удаления или добавления константы к объекту. Это может быть полезно, если вы хотите вызвать определенную перегрузку.
Упрощенный пример:
class foo {
int i;
public:
foo(int i) : i(i) { }
int bar() const {
return i;
}
int bar() { // not const
i++;
return const_cast<const foo*>(this)->bar();
}
};
Ответ 2
Вам не нужно const_cast добавить const ness:
class C;
C c;
C const& const_c = c;
Прочтите этот вопрос и ответ для получения более подробной информации.
Ответ 3
STL, поскольку С++ 17 теперь предоставляет std::as_const для этого случая.