Templates and generic programming
T.123
Используйте `constexpr`-функции для вычисления значений во время компиляции
Причина
Функция — наиболее очевидный и общепринятый способ выразить вычисление значения. Зачастую constexpr-функция предполагает меньшие накладные расходы на компиляцию, чем альтернативы.
Примечание
Техники «трейтов» в основном заменены псевдонимами шаблонов для вычисления типов и constexpr-функциями для вычисления значений.
Пример
template<typename T>
// requires Number<T>
constexpr T pow(T v, int n) // power/exponential
{
T res = 1;
while (n--) res *= v;
return res;
}
constexpr auto f7 = pow(pi, 7);
Контроль
- Отмечайте метапрограммы шаблонов, возвращающие значение. Они должны быть заменены
constexpr-функциями.