Кажется очевидным, что constexpr означает сопзЬ и, таким образом, он является общим, чтобы увидеть:constexpr const vs constexpr переменные?
constexpr int foo = 42; // no const here
Однако, если вы пишете:
constexpr char *const str = "foo";
Тогда GCC будет порождать «предупреждение: не рекомендуется использовать преобразование из строки постоянной в ' char * '", если передан флаг Wwrite-string.
Запись:
constexpr const char *const str = "foo";
решает эту проблему.
Значит, constexpr const и constexpr действительно то же самое?
В то время как верно, я думаю, что ОР прав, он _ought_ должен иметь отношение к ошибке. 'constexpr' и' constexpr const' должны быть одинаковыми. –
Проблема заключается в преобразовании const char * в char *. Является ли результирующее значение константой или constexpr, не является фактором. Ошибка уже произошла по этой точке. Такая же ошибка будет происходить только с простым символом char * foo = "bar". –
Тип '' foo '' is 'const char [4]'. –