История изменений
Исправление Siborgium, (текущая версия) :
Этот подход совмещает минусы каждого из подходов. У вас остается std::function, остается отсутствие типов в сигнатуре, остается прописывание типов руками, и плюсом вы получаете необходимость дублировать объявления и получаете лишний вызов на каждую такую функцию, который может и не быть заинлайнен.
Исходная версия Siborgium, :
Этот подход совмещает минусы каждого из подходов.