Функция constexpr отличается от обычной функции тем, что она позволяет определить возвращаемое значение во время компиляции. 1
Ключевое слово constexpr указывает, что если значения параметров возможно посчитать на этапе компиляции, то и возвращаемое значение должно посчитаться там же. 4 Если значение хотя бы одного параметра неизвестно на этапе компиляции, то функция будет запущена в runtime, а не возникнет ошибка компиляции. 4
Кроме того, функция constexpr обычно выполняется быстрее, чем обычная функция. 1
Некоторые ограничения на constexpr-функции: они не могут быть виртуальными, должны возвращать литеральный тип, все параметры также должны иметь литеральный тип. 4