Такое преобразование недопустимо, поскольку, если преобразование будет возможно, вы можете изменить объект const следующим образом:
#include <stdio.h>
const double A0 = 0;
const double A1 = 1;
const double* A[2] = { &A0, &A1 };
double * B[2];
int main()
{
double** b = B;
const double ** a = b; // illegal
//const double ** a = (const double **)b; // you can simulate it would be legal
a[0] = A[0];
b[0][0] = 2; // modified A0
printf("%f",A[0][0]);
}
Для получения смоделированного результата проверьте код в IdeOne.com - вы получите SIGSEGV (объект const был помещен в постоянную память, и вы пытаетесь его изменить).На другой платформе объект может быть изменен без уведомления.