Pourquoi 1 est une erreur et 2 est légal.
Ce code est tiré de C++ primer 5th edition, il n'y a pas beaucoup de détails à ce sujet [Edit : Ceci n'est pas une question dupliquée, la soi-disant question originale est très générique].
const double pi = 3.14;
const double *cptr = π
*cptr = 42; // 1
double dval = 3.14;
cptr = &dval; // 2