Доброго времени суток!
Как известно, в С++ функции можно перегружать и даже делать на них указатели. Но как передавать указатель на функцию неопределенного типа (не на класс и не на любой другой объект, только на функцию, число и типы параметров которой заранее неизвестны) в другую функцию? Думаю насчет assert-ов или variable templates. Решение пока не придумал, но мб кто-то уже сталкивался и знает решение?
Смежный вопрос - как возвращать указатель на подобную функцию?
Имеется ввиду нечто вот такое, но как видно, вышеописанные проблемы в этом коде не решены:
/*нет проверки на то, что fp действительно является функцией!*/
template<class function_pointer>
void register_function( std::string name,
type* prototype,//указатель на массив типов параметров
type ret,//тип возвращаемого значения
function_pointer fp//указатель на функцию
);
/*Указатель-то вернется, но совсем не ясно, как им воспользоваться.
К тому же, я хз, как сделать передачу аргументов, которые лежат в двусвязном списке в обычную функцию навроде int foo(int a, int b, double c). список аргументов надо как-то динамически создавать (задача, обратная vararg)...*/
void* find_func(const std::string & name);