Кажется очевидным, что constexpr подразумевает const и, следовательно, обычно видно:
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 действительно одинаковы?