Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?
Нет, это динамический полиморфизм. Оно же в рантайме диспатчится, а не во время компиляции.
Да, это статический полиморфизм. Оно же может во время компиляции диспатчится, а не в рантайме.
template<auto p_action> struct
repeat
{
private: int const m_remaining_iterations_count{};
public: constexpr repeat(int const remaining_iterations_count)
: m_remaining_iterations_count{remaining_iterations_count}
{
return;
}
public: constexpr auto operator ()(int value) const
{
auto remaining_iterations_count{m_remaining_iterations_count};
while(0 < remaining_iterations_count)
{
--remaining_iterations_count;
value = (*p_action)(value);
}
return value;
}
};
constexpr auto increment(int const value) { return value + 1; }
constexpr auto decrement(int const value) { return value - 1; }
static_assert(25 == repeat<&increment>(5)(20));
static_assert(12 == repeat<&decrement>(8)(20));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь решить следующую задачу: создать пользовательскую очередь, в которой каждый элемент равен сумме предыдущих, первый элемент равен...