title: modifier constexpr has potential meaning of const, why canot completely replace it?
body: <p>I have following code.</p>
  <pre><code>#include &lt;iostream&gt;
  
  using namespace std;
  
  int
  main(int argc, char **argv) {
          const char *a =&quot;123&quot;;
          constexpr const char *b =&quot;123&quot;; // g++ compile ok
          constexpr char *c =&quot;123&quot;; // g++ compile warning
          if (a == b) {
                  cout &lt;&lt; &quot;a pointer is equal to b&quot; &lt;&lt; endl;
          } else {
                  cout &lt;&lt; &quot;a pointer is not equal to b&quot; &lt;&lt; endl;
          }
  }
  </code></pre>
  <p>Use g++ toolchain to compile. I am told that const char* is converted to char*.<br></p>
  <pre><code>constexpr char *c =&quot;123&quot;;
  </code></pre>
  <p>Why doesnot constexpr cover the meaning of &quot;const&quot;?</p>
  <blockquote>
  <p>⋊&gt; /h/m/stackoverfolw g++ test7.cpp -std=c++11<br>
  test7.cpp: In function 'int main(int, char**)':<br>
  test7.cpp:9:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]<br>
  constexpr char *c =&quot;123&quot;;<br>
  ^</p>
  </blockquote>