В C ++ Primer, пятое издание, §6.5.2:
Функция
constexpr
определяется как любая другая функция, но должна соответствовать определенным ограничениям: Тип возвращаемого значения и тип каждого параметра в должны быть буквальным типом (§2.4.4, стр. 66), а тело функции должно содержать ровно один оператор возврата
но еще одно предложение в этой главе (стр. 239):
Функция constexpr может возвращать значение, которое не является константой.
// scale(arg) is a constant expression if arg is a constant expression constexpr size_t scale(size_t cnt) { return new_sz() * cnt; }
Это противоречивое резюме? Я запутался в этом.
Тип возвращаемого значения scale
- это буквальный тип?
Обновление: в чем разница между буквальным типом и константой?
5
. Стандарт определяет, что такое буквальный тип, но я не могу сейчас найти его. Вот его страница cppreference. - person   schedule 05.03.2015size_t
), а значения не должны быть постоянными. Предположительно, §2.4.4, с. 66 описывает буквальные типы - это не означает постоянный, если вы так думали. - person Mike Seymour   schedule 05.03.2015