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