Это не указатель const, это указатель на const. Копирование всегда выполняется с помощью конструктора копирования, например:
bool f(const Foo* foo) {
Foo tmp(*foo);
// use tmp
return file_not_found;
}
Каждый раз, когда вы чувствуете необходимость использовать const_cast
, вы, вероятно, делаете что-то не так.