constexpr
абсолютно полный по Тьюрингу.Рекурсия разрешена.Это удобный способ определения функций, которые работают как во время компиляции, так и во время выполнения.constexpr
функции, будучи простыми функциями, не могут выполнять операции над типами.(Конечно, если вы не используете метапрограммирование шаблонов для определения упомянутой функции.)
Оба шаблона классов и constexpr
могут использоваться для хранения константных выражений во время компиляции, но на этом сходство заканчивается.Они не являются избыточными, и TMP не уйдет в ближайшее время.
Однако некоторые особенно уродливые вычисления во время компиляции могут быть более элегантно переписаны как правильные функции.