У меня проблема, когда сохраняется указатель на функцию C ++, вместе с набором аргументов для его вызова, чтобы его можно было вызвать позже. Вызывающий код не знает типа и аргументов функций. Сохранение и вызов указателей и аргументов функций в моем приложении чрезвычайно важны для производительности. Интерфейс должен выглядеть примерно так:
void func( int a, char * b );
call_this_later( func, 5, "abc" );
Простое решение - поместить всю эту информацию в функтор, требуя другого typedef для каждой вызываемой функции. C ++ 11 позволяет мне делать это с помощью вариативного шаблона, так что это нормально.
Поскольку тип функтора неизвестен в момент вызова, кажется необходимым создать виртуальный базовый класс для этих функторов и вызывать функторы с помощью вызовов виртуальных функций. Накладные расходы на производительность вызовов виртуальных функций + выделение кучи слишком высоки (я расширяю границы реализации этой идиомы, используя как можно меньше инструкций по сборке). Так что мне нужно другое решение.
Есть идеи?