Получение количества аргументов указателя функции

Сейчас я использую этот код:

    size_t argc(std::function<Foo()>)
    { return 0; }

    size_t argc(std::function<Foo(Bar)>)
    { return 1; }

    size_t argc(std::function<Foo(Bar, Bar)>)
    { return 2; }

    size_t argc(std::function<Foo(Bar, Bar, Bar)>)
    { return 3; }

    // ...

Но он довольно уродлив и ограничен (пользователь не может вызвать argc с функцией с любым количеством аргументов). Есть ли лучший способ сделать это?

Примечание: тип возврата и тип аргумента всегда одинаковы. Я знаю, что могу использовать шаблоны для принятия любого типа, но мне это не нужно.

8
задан Guilherme Bernal 27 December 2011 в 14:12
поделиться