Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?
Нет, это динамический полиморфизм. Оно же в рантайме диспатчится, а не во время компиляции.
Да, это статический полиморфизм. Оно же может во время компиляции диспатчится, а не в рантайме.
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));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь решить следующую задачу: создать пользовательскую очередь, в которой каждый элемент равен сумме предыдущих, первый элемент равен...