title: Why is an argument of type double ** incompatible with a parameter of type const double **
body: <p>I get a message about passing an incompatible pointer type from gcc when I pass a double ** to a function that expects a const double **. This is confusing to me since const double ** just puts more constraints on the use of the parameter passed in. How is this essentially different from passing a double * to a function that expects a const double *?</p>
  
  <p>Added later: Passing double ** to a function that expects const double * const * is similarly problematic, any idea what can go wrong for this?</p>