Язык программирования С++ Четвертое издание - Bjarne Stroustrup: (выделено мной)
2.2.3. Константы
В нескольких местах постоянные выражения требуются по языковым правилам (например, границы массива (§2.2.5, §7.3), метки случаев (п. 2.2.4, п. 9.4.2), некоторые аргументы шаблона (§25.2) и константы, объявленные с использованием constexpr). В других случаях оценка времени компиляции важна для производительности. Независимо от проблем с производительностью, понятие неизменности (объекта с неизменным состоянием) является важным аспектом дизайна (§10.4).
Кажется, что Stroustrup предлагает здесь, что constexpr
обеспечивает неизменность объекта лучше, чем традиционная декларация const
. Это верно? Существуют ли способы, в которых constexpr
может быть более безопасным/менее волатильным, чем const
, или Stroustrup просто означает, что, поскольку существуют способы использования constexpr
, которые не поддерживаются с помощью const
(см. Действительно ли необходим constexpr?), в таких случаях неизменяемость может быть обеспечена с помощью constexpr
?