В то время как большинство вопросов отвечают на вопрос (вы не можете передать мутирующий указатель по ссылке в функцию, которая принимает не мутирующий указатель по ссылке), я не думаю, что логическое обоснование делается явным в любом из ответов:
Это нарушило бы правильность. Если вы передадите не мутирующий указатель по ссылке на функцию, принимающую постоянный указатель по ссылке, он вполне может изменить указатель для ссылки на постоянный объект (в конце концов, тип гарантирует, что он не изменит это значение). Теперь проблема в том, что вне вашей функции переданный указатель на самом деле не является константным, и компилятор должен был бы разрешить любую операцию мутации с указанным объектом, что подразумевало бы изменение объекта, который изначально был константой.
Вот краткий пример:
const int y = 0;
void f( const int *& p ) {
p = &y; // ok, p is a pointer to a constant integer
}
int main()
{
int *p;
f( p ); // if this was allowed p would point to y, but y is constant
*p = 5; // correct, p is a mutating pointer
}