Binding - 3
template < typename R , class TList >
Functor<R, typename TList::Tail> BindFirst
( const Functor<R, TList>& fun , TList::Head bound )
{
typedef Functor<R, TList> Incoming;
typedef Functor<R, typename TList::Tail> Outgoing;
return Outgoing(std::auto_ptr<typename Outgoing::Impl>
(new BinderFirst<Incoming>(fun, bound)));
}