Adobe Systems Incorporated


Categories: functors, adaptors Component type: type


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 typedefs 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.


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.

transform(first, last, first, fabs);

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.

transform(first, last, first,
          compose1(negate<double>, ptr_fun(fabs)));


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


Type requirements

Public base classes

unary_function<Arg, Result>


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.


See also

pointer_to_binary_function, ptr_fun, AdaptableUnaryFunction

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google