template<class BinFunc>
class binder2nd : public unary_function<
BinFunc::first_argument_type,
BinFunc::result_type
>
{
public:
binder2nd(
const BinFunc& func,
const BinFunc::second_argument_type& secondArg
) : m_func(func), m_secondArg(secondArg) {}
result_type operator()(const argument_type& first) const
{ return m_func(first, m_secondArg); }
protected:
BinFunc m_func;
BinFunc::second_argument_type m_secondArg;
};
template<class BinFunc, class SecondArg> inline
binder2nd<BinFunc> bind2nd(
const BinFunc& func,
const SecondArg& secondArg
)
{
return binder2nd<BinFunc>(
func,
BinFunc::second_argument_type(secondArg)
);
}
End of Listing