#cpp #c #ооп
Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?
Ответы
Ответ 1
Нет, это динамический полиморфизм. Оно же в рантайме диспатчится, а не во время компиляции.Ответ 2
Да, это статический полиморфизм. Оно же может во время компиляции диспатчится, а не в рантайме. templatestruct 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));
Комментариев нет:
Отправить комментарий