title: C++: char** to const char** conversion
body: <p>In C++, why is it not possible to pass a <code>char**</code> as an argument to a function that accepts <code>const char**</code> , when a conversion from <code>char*</code> to <code>const char*</code> is possible, as shown below</p>
  
  <pre><code>void f1(const char** a)
  {
  
  }
  
  void f2(const char* b)
  {
  
  }
  
  int main(int argc, char const *argv[])
  {
     char* c;
  
     f1(&amp;c); // doesn't work
     f2(c); //works
  
     return 0;
  }
  </code></pre>
  
  <p>The compiler output is </p>
  
  <pre>
  test.cpp: In function 'int main(int, const char**)':
  test.cpp:15:10: error: invalid conversion from 'char**' to 'const char**' [-fpermissive]
  test.cpp:1:6: error:   initializing argument 1 of 'void f1(const char**)' [-fpermissive]
  </pre>