А.4.2. constexpr-объекты
До сих пор мы говорили о применении constexpr к функциям. Но этот спецификатор можно применять и к объектам. Чаще всего, так делают для диагностики; компилятор проверяет, что объект инициализирован константным выражением, constexpr-конструктором или агрегатным инициализатором, составленным из константных выражений. Кроме того, объект автоматически объявляется как const:
constexpr int i = 45;← Правильно
constexpr std::string s("hello");←┐ Ошибка, std::string —
int foo(); │ не литеральный тип
constexpr int j = foo();← Ошибка, foo() не объявлена как constexpr