Можно ли объявить тип функции, который использует себя как аргумент в С++?

Например, существует ли какой-либо юридический эквивалент этому?

typedef void (*SelfReferencingFnPtr)(int, SelfReferencingFnPtr);

С clang это вызывает ошибку "неизвестное имя SelfReferencingFnPtr".

Лучшее, что я смог придумать, - это функтор, чей operator() принимает свой собственный тип.

Ответ 1

Нет, см. GotW # 57. Это действительно рекурсивная проблема.