functors/bindfp3.hpp

The following code example is taken from the book
C++ Templates - The Complete Guide
by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
© Copyright David Vandevoorde and Nicolai M. Josuttis 2002


// convenience function to bind a function pointer with three parameters
template<int PNum, typename RT, typename P1, typename P2, typename P3>
inline
Binder<FunctionPtr<RT,P1,P2,P3>,
       PNum,
       BoundVal<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                      PNum
                                     >::Type
               >
      >
bindfp (RT (*fp)(P1,P2,P3),
        typename ForwardParamT<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                                     PNum
                                                    >::Type  
                              >::Type val)
{
    return Binder<FunctionPtr<RT,P1,P2,P3>, PNum,
                  BoundVal<typename FunctorParam<FunctionPtr<RT,P1,P2,P3>,
                                                             PNum
                                                >::Type>
                          >(func_ptr(fp),
                            BoundVal<typename FunctorParam
                                       <FunctionPtr<RT,P1,P2,P3>,
                                        PNum
                                       >::Type
                                    >(val));
}