Это будет эффективно брать указатель на const-объект и удалять константу, таким образом делая его (foo
) способным мутировать объект.Это было бы несовместимо с действительным открытым интерфейсом, который подразумевает, что он работает одинаково (и ожидаемо) для любого типа.
Не только это, но это позволит вам вызывать его с адресом фактически константного объекта,Поведение будет неопределенным(не мутирующие константные типы).
const A *p;
Remove(const_cast<A*>(p)); // error for `foo()`