Здравствуйте, 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>{}); }
Можно через шаблон класса и пр.