|
|
| |
Categories: functors, adaptors | Component type: type |
Description
Pointer_to_unary_function
is a functors adaptor that allows a function pointer Result (*f)(Arg)
to be treated as an AdaptableUnaryFunction. That is: if F
is a pointer_to_unary_function<Arg, Result>
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 AdaptableUnaryFunction, i.e. it defines the nested typedef
s argument_type
and result_type
.
Note that a function pointer of type Result (*)(Arg)
is a perfectly good UnaryFunction object, and may be passed to an STL algorithm that expects an argument that is a UnaryFunction. The only reason for using the pointer_to_unary_function
object is if you need to use an ordinary function in a context that requires an AdaptableUnaryFunction, e.g. as the argument of a function object adaptor.
Most of the time, you need not declare an object of type pointer_to_unary_function
directly. It is almost always easier to construct one using the ptr_fun
function.
Example
The following code fragment replaces all of the numbers in a range with their absolute values, using the standard library function fabs
. There is no need to use a pointer_to_unary_function
adaptor in this case.
The following code fragment replaces all of the numbers in a range with the negative of their absolute values. In this case we are composing fabs
and negate
. This requires that fabs
be treated as an AdaptableUnaryFunction, so we do need to use a pointer_to_unary_function
adaptor.
Definition
Defined in the standard header functional, and in the nonstandard backward-compatibility header function.h.
Template parameters
Parameter | Description | Default |
Arg | The function object's argument type | |
Result | The function object's result type | |
Model of
AdaptableUnaryFunction
Type requirements
Public base classes
unary_function<Arg, Result>
Members
Member | Where defined | Description |
argument_type | AdaptableUnaryFunction | The type of the function object's argument: Arg . |
result_type | AdaptableUnaryFunction | The type of the result: Result |
result_type operator()(argument_type x) | UnaryFunction | Function call operator. |
pointer_to_unary_function(Result (*f)(Arg)) | pointer_to_unary_function | See below. |
pointer_to_unary_function() | pointer_to_unary_function | See below. |
template <class Arg, class Result>
pointer_to_unary_function<Arg, Result>
ptr_fun(Result (*x)(Arg));
| pointer_to_unary_function | See below. |
New members
These members are not defined in the AdaptableUnaryFunction requirements, but are specific to pointer_to_unary_function
.
Member | Description |
pointer_to_unary_function(Result (*f)(Arg)) | The constructor. Creates a pointer_to_unary_function whose underlying function is f . |
pointer_to_unary_function() | The default constructor. This creates a pointer_to_unary_function that does not have an underlying C function, and that therefore cannot actually be called. |
template <class Arg, class Result>
pointer_to_unary_function<Arg, Result>
ptr_fun(Result (*x)(Arg));
| If f is of type Result (*)(Arg) then ptr_fun(f) is equivalent to pointer_to_unary_function<Arg,Result>(f) , but more convenient. This is a global function, not a member. |
Notes
See also
pointer_to_binary_function
, ptr_fun
, AdaptableUnaryFunction