

 
Categories: functors, adaptors  Component type: type 
Description
Pointer_to_binary_function
is a functors adaptor that allows a function pointer Result (*f)(Arg1, Arg2)
to be treated as an AdaptableBinaryFunction. That is: if F
is a pointer_to_binary_function<Arg1, Arg2, Result>
that was initialized with an underlying function pointer f
of type Result (*)(Arg1, Arg2)
, then F(x, y)
calls the function f(x, y)
. The difference between f
and F
is that pointer_to_binary_function
is an AdaptableBinaryFunction, i.e. it defines the nested typedef
s first_argument_type
, second_argument_type
, and result_type
.
Note that a function pointer of type Result (*)(Arg1, Arg2)
is a perfectly good BinaryFunction object, and may be passed to an STL algorithm that expects an argument that is a BinaryFunction. The only reason for using the pointer_to_binary_function
class is if you need to use an ordinary function in a context that requires an AdaptableBinaryFunction, e.g. as the argument of a function object adaptor.
Most of the time, you need not declare an object of type pointer_to_binary_function
directly. It is almost always easier to construct one using the ptr_fun
function.
Example
The following code fragment finds the first string in a list that is equal to "OK"
. It uses the standard library function strcmp
as an argument to a function object adaptor, so it must first use a pointer_to_binary_function
adaptor to give strcmp
the AdaptableBinaryFunction interface.
List<char*> L;
...
List<char*>::iterator item =
find_if(L.begin(), L.end(),
not1(binder2nd(ptr_fun(strcmp), "OK")));
Definition
Defined in the standard header functional, and in the nonstandard backwardcompatibility header function.h.
Template parameters
Parameter  Description  Default 
Arg1  The function object's first argument type  
Arg2  The function object's second argument type  
Result  The function object's result type  
Model of
AdaptableBinaryFunction
Type requirements
Public base classes
binary_function<Arg1, Arg2, Result>
Members
Member  Where defined  Description 
first_argument_type  AdaptableBinaryFunction  The type of the first argument: Arg1 . 
second_argument_type  AdaptableBinaryFunction  The type of the second argument: Arg2 
result_type  AdaptableBinaryFunction  The type of the result: Result 
Result operator()(Arg1 x, Arg2 y)  BinaryFunction  Function call operator. 
pointer_to_binary_function(Result (*f)(Arg1, Arg2))  pointer_to_binary_function  See below. 
pointer_to_binary_function()  pointer_to_binary_function  See below. 
template <class Arg1, class Arg2, class Result>
pointer_to_unary_function<Arg1, Arg2, Result>
ptr_fun(Result (*x)(Arg1, Arg2));
 pointer_to_binary_function  See below. 
New members
These members are not defined in the AdaptableBinaryFunction requirements, but are specific to pointer_to_binary_function
.
Member  Description 
pointer_to_binary_function(Result (*f)(Arg1, Arg2))  The constructor. Creates a pointer_to_binary_function whose underlying function is f . 
pointer_to_binary_function()  The default constructor. This creates a pointer_to_binary_function that does not have an underlying function, and that therefore cannot actually be called. 
template <class Arg1, class Arg2, class Result>
pointer_to_unary_function<Arg1, Arg2, Result>
ptr_fun(Result (*x)(Arg1, Arg2));
 If f is of type Result (*)(Arg1, Arg2) then ptr_fun(f) is equivalent to pointer_to_binary_function<Arg1,Arg2,Result>(f) , but more convenient. This is a global function, not a member function. 
Notes
See also
pointer_to_unary_function
, ptr_fun
, AdaptableBinaryFunction