Es scheint offensichtlich, dass constexpr const impliziert und somit ist es üblich, um zu sehen:consExpr const vs constexpr Variablen?
constexpr int foo = 42; // no const here
Allerdings, wenn Sie schreiben:
constexpr char *const str = "foo";
Dann wird GCC laichen „Warnung: veraltet Konvertierung von String-Konstante ' char * '"wenn -Write-String-Flag übergeben wird.
Schreiben:
constexpr const char *const str = "foo";
löst das Problem.
Sind also constexpr const und constexpr wirklich gleich?
Obwohl wahr, ich denke, das OP ist richtig, es _ought_ auf den Fehler haben. "conetexpr" und "consExpr const" sollten identisch sein. –
Das Problem ist die Umwandlung eines const char * in ein char *. Ob der resultierende Wert ein const oder ein conexpr ist, ist kein Faktor. Der Fehler ist bereits an diesem Punkt aufgetreten. Derselbe Fehler tritt nur bei einem einfachen Zeichen * foo = "bar" auf. –
Der Typ von '" foo "' ist 'const char [4]'. –