| Member |
Description |
binder1st(const AdaptableBinaryFunction& F, AdaptableBinaryFunction::first_argument_type c) |
The constructor. Creates a binder1st such that calling it with the argument x (where x is of type AdaptableBinaryFunction::second_argument_type ) corresponds to the call F(c, x) . |
template binder1st bind1st(const AdaptableBinaryFunction& F, const T& c); |
If F is an object of type AdaptableBinaryFunction , then bind1st(F, c) is equivalent to binder1st(F, c) , but is more convenient. The type T must be convertible to AdaptableBinaryFunction::first_argument_type . This is a global function, not a member function. |
Notes
[1] Intuitively, you can think of this operation as "binding" the first argument of a binary function to a constant, thus yielding a unary function. This is a special case of a closure.
See also
The function object overview, binder2nd , Adaptable Unary Function, Adaptable Binary Function
Categories: functors, adaptors
Component type: type
Description
Binder2nd is a function object adaptor: it is used to transform an adaptable binary function into an adaptable unary function. Specifically, if f is an object of class binder2nd , then f(x) returns F(x, c) , where F is an object of class AdaptableBinaryFunction and where c is a constant. Both F and c are passed as arguments to binder2nd 's constructor. [1]
The easiest way to create a binder2nd is not to call the constructor explicitly, but instead to use the helper function bind2nd .
Example
Finds the first positive number in a list.
list L;
…
list::iterator first_positive = find_if(L.begin(), L.end(), bind2nd(greater(), 0));
assert(first_positive == L.end() || *first_positive > 0);
Definition
Defined in the standard header functional, and in the nonstandard backward-compatibility header function.h.
Template parameters
| Parameter |
Description |
AdaptableBinaryFunction |
The type of the binary function whose second argument is being bound to a constant. |
Model of
Adaptable Unary Function
Type requirements
AdaptableBinaryFunction must be a model of Adaptable Binary Function.
Public base classes
unary_function
Members
| Member |
Where defined |
Description |
argument_type |
Adaptable Unary Function |
The type of the function object's argument, which is AdaptableBinaryFunction::first_argument_type |
result_type |
Adaptable Unary Function |
The type of the result: AdaptableBinaryFunction::result_type |
result_type operator()(const argument_type& x) const |
Adaptable Unary Function |
Function call. Returns F(x, c) , where F and c are the arguments with which this binder1st was constructed. |
binder2nd(const AdaptableBinaryFunction& F, AdaptableBinaryFunction::second_argument_type c) |
binder2nd |
See below |
template binder2nd bind2nd(const AdaptableBinaryFunction& F, const T& c); |
binder2nd |
See below |
New members
These members are not defined in the Adaptable Unary Function requirements, but are specific to binder2nd .
| Member |
Description |
binder2nd(const AdaptableBinaryFunction& F, AdaptableBinaryFunction::second_argument_type c) |
The constructor. Creates a binder2nd such that calling it with the argument x (where x is of type AdaptableBinaryFunction::first_argument_type ) corresponds to the call F(x, c) . |
template binder2nd bind2nd(const AdaptableBinaryFunction& F, const T& c); |
If F is an object of type AdaptableBinaryFunction , then bind2nd(F, c) is equivalent to binder2nd(F, c) , but is more convenient. The type T must be convertible to AdaptableBinaryFunction::second_argument_type . This is a global function, not a member function. |
Notes
[1] Intuitively, you can think of this operation as "binding" the second argument of a binary function to a constant, thus yielding a unary function. This is a special case of a closure.
See also
The function object overview, binder1st , Adaptable Unary Function, Adaptable Binary Function
Categories: functors, adaptors
Component type: function
Prototype
template
pointer_to_unary_function ptr_fun(Result (*x)(Arg));
template
pointer_to_binary_function ptr_fun(Result (*x)(Arg1, Arg2));
Description
Ptr_fun takes a function pointer as its argument and returns a function pointer adaptor, a type of function object. It is actually two different functions, not one (that is, the name ptr_fun is overloaded). If its argument is of type Result (*)(Arg) then ptr_fun creates a pointer_to_unary_function , and if its argument is of type Result (*)(Arg1, Arg2) then ptr_fun creates a pointer_to_binary_function .
Definition
Defined in the standard header functional, and in the nonstandard backward-compatibility header function.h.
Requirements on types
The argument must be a pointer to a function that takes either one or two arguments. The argument type(s) and the return type of the function are arbitrary, with the restriction that the function must return a value; it may not be a void function.
Example
See the examples in the discussions of pointer_to_unary_function and pointer_to_binary_function .
See also
Function Objects, pointer_to_unary_function , pointer_to_binary_function , Adaptable Unary Function, Adaptable Binary Function
pointer_to_unary_function
Categories: functors, adaptors
Component type: type
Description
Pointer_to_unary_function is a function object adaptor that allows a function pointer Result (*f)(Arg) to be treated as an Adaptable Unary Function. That is: if F is a pointer_to_unary_function that was initialized with an underlying function pointer f of type Result (*)(Arg) , then F(x) calls the function f(x) . The difference between f and F is that pointer_to_unary_function is an Adaptable Unary Function, i.e. it defines the nested typedef s argument_type and result_type .
Читать дальше