¿Cómo convertir "puntero a tipo de puntero" a const?

Con el siguiente código

void TestF(const double ** testv){;}
void callTest(){
    double** test;
    TestF(test);
}

Entiendo esto:

'TestF' : cannot convert parameter 1 from 'double **' to 'const double **'

No puedo entender por qué. Por quétest no puede ser fundido en silencio aconst double**? ¿Por qué debería hacerlo explícitamente? Yo sé eso

TestF(const_cast<const double**>(test)) 

hace que mi código sea correcto, pero creo que esto debería ser innecesario.

¿Hay algunos conceptos clave sobreconst que me estoy perdiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta