А.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