Как сделать сабж? Через указатели или std::function — не суть.
void foo(int a, ... b);
//на место многоточия надо воткнуть указатель на подобную функцию
//получается так:
void foo(int a, std::function<void(int, std::function<void(int,...WTF)>)>);
И тут я понял, что вложенные определения функции-аргумента никогда не закончатся. Финт с typedef в лоб приводит к тому же самому. Если второй аргумент определить через шаблонный тип, все должно получиться, но мне в конечном счете хочется получить синоним (typedef или еще как) типа такой функции, а там шаблоны вроде как не сработают.
Какие есть еще варианты кроме грязных кастований указателей?