Могу ли я извлечь дополнительную информацию (например, количество аргументов и их типы) из указателя функции?Если (скорее всего) нет, то как лучше всего разрешить программисту передать указатель на функцию и переменное число аргументов EDIT: I meant that it should allow functions with different number of arguments
, которое требуется, чтобы убедиться, что программист не передал невернотипы аргументов.
Что я хочу сделать: Предоставить функции и их аргументы языку сценариев, не прибегая к тому, чтобы программист набирал аргументы вручную (и, следовательно, допускал ошибки при прохождении программиста).указатель на функцию и неправильные аргументы, которые принимает функция).
Еще немного уточнения: Я должен иметь возможность вывести имя функции и типы аргументов для целей документирования.
----------------- РЕШЕНИЕ -----------------
Ответ Джеймса - это то, что я искал.Вот код, представляющий собой бит запутанный, который должен помочь любому, кто застрял в такой же ситуации.
boost::function_traits<boost::remove_pointer
<BOOST_TYPEOF(&SomeFunction)>::type>::arg2_type);
Если вам требуется вывод, используйте RTTI (при условии, что в компиляторе включен RTTI)
std::cout << typeid(boost::function_traits<boost::remove_pointer
<BOOST_TYPEOF(&SomeFunction)>::type>::arg2_type).name() << std::endl;