Полиморфизм и указатели на функции

92
21 октября 2021, 22:40

Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?

Answer 1

Нет, это динамический полиморфизм. Оно же в рантайме диспатчится, а не во время компиляции.

Answer 2

Да, это статический полиморфизм. Оно же может во время компиляции диспатчится, а не в рантайме.

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));
READ ALSO
Очередь на языке С++

Очередь на языке С++

Пытаюсь решить следующую задачу: создать пользовательскую очередь, в которой каждый элемент равен сумме предыдущих, первый элемент равен...

84
Что я упустил text text

Что я упустил text text

Получается бесконечный цикл

108