Re[3]: И все-же - ликбез по C++ времени компиляции
От: rg45 СССР  
Дата: 08.07.23 06:39
Оценка: 1 (1) +1
Здравствуйте, Shmj, Вы писали:

R>>Неуч, if constexpr:


S>А где бы прочитать про этот второй вид C++ и его особенности. Как он взаимодействует с первым С++?


И кстати, количество способов реализовать компайл-тайм факториал в С++ слегка больше одного.

Например, можно через специализацию шаблона функции:

template <size_t N>
constexpr size_t factorial() { return N * factorial<N - 1>(); }

template <>
constexpr size_t factorial<0>() { return 1; }


можно, через fold expressions:

template <size_t...I>
constexpr size_t product(std::index_sequence<I...>) { return (1 * ... * (I + 1)); }

template <size_t N>
constexpr size_t factorial() { return product(std::make_index_sequence<N>{}); }


Можно через шаблон класса и пр.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 08.07.2023 7:01 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.