Это частичная специализация шаблонов.
template<typename T> class function;
template<typename Ret> class function<Ret()> { ... };
template<typename Ret, typename Arg1> class function<Ret(Arg1)> { ... };
Как вы можете видеть, это быстро устареет, но переменные шаблоны будут обрабатывать его в C ++ 0x.