Regarding the definition of the std::function,
template< class R, class... Args >
class function<R(Args...)>;
And the instantiation of the template is like this:
std::function<int(Foo const&)> f_num = &Foo::num_;
I'm confusing that how the parameter can be used like this: int(Foo const&). int and Foo const& are both types.