Сообщение Re[3]: И все-же - ликбез по C++ времени компиляции от 08.07.2023 6:39
Изменено 08.07.2023 7:01 rg45
Re[3]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
R>>Неуч, if constexpr:
S>А где бы прочитать про этот второй вид C++ и его особенности. Как он взаимодействует с первым С++?
И кстати, количество способов реализовать компайл-тайм факториал в С++ слегка больше одного.
Например, можно через специализацию шаблона функции:
можно, через fold expressions:
Можно через шаблон класса и пр.
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 (... * (I + 1)); }
template <size_t N>
constexpr size_t factorial() { return product(std::make_index_sequence<N>{}); }Можно через шаблон класса и пр.
Re[3]: И все-же - ликбез по C++ времени компиляции
Здравствуйте, Shmj, Вы писали:
R>>Неуч, if constexpr:
S>А где бы прочитать про этот второй вид C++ и его особенности. Как он взаимодействует с первым С++?
И кстати, количество способов реализовать компайл-тайм факториал в С++ слегка больше одного.
Например, можно через специализацию шаблона функции:
можно, через fold expressions:
Можно через шаблон класса и пр.
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>{}); }Можно через шаблон класса и пр.