It is my understanding that something like this is okay:
const int ci = 42;
const int *cip = &ci;
int *ip = (int *)cip;
int j = *ip;
What about this?
const int ci = 42;
const int *cip = &ci;
const int **cipp = &cip;
int **ipp = (int **)cipp;
int j = **ipp;