Rogue Wave banner
Previous fileTop of documentContentsIndexNext file

Function Objects



Summary

Function objects are objects with an operator() defined. They are used as arguments to templatized algorithms, in place of pointers to functions.

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

None

Synopsis

 #include<functional>

Description

Function objects are objects with an operator() defined. They are important for the effective use of the standard library's generic algorithms, because the interface for each algorithmic template can accept either an object with an operator() defined, or a pointer to a function. The Standard C++ Library includes both a standard set of function objects, and a pair of classes that you can use as the base for creating your own function objects.

Function objects that take one argument are called unary function objects. Unary function objects must include the typedefs argument_type and result_type. Similarly, function objects that take two arguments are called binary function objects and, as such, must include the typedefs first_argument_type, second_argument_type, and result_type.

The classes unary_function and binary_function make the task of creating templatized function objects easier. The necessary typedefs for a unary or binary function object are included by inheriting from the appropriate function object class.

The function objects in the standard library are listed below, together with a brief description of their operation. This class reference also includes an alphabetic entry for each function.

Name Operation
arithmetic functions
plus
addition x + y
minus
subtraction x - y
multiplies
multiplication x * y
divides
division x / y
modulus
remainder x % y
negate
negation - x
comparison functions
equal_to
equality test x == y
not_equal_to
inequality test x != y
greater
greater comparison x > y
less
less-than comparison x < y
greater_equal
greater than or equal comparison x >= y
less_equal
less than or equal comparison x <= y
logical functions
logical_and
logical conjunction x && y
logical_or
logical disjunction x || y
logical_not
logical negation ! x

Interface

Example

Program Output

Warnings

If your compiler does not support default template parameters, then you always need to supply the Allocator template argument. For instance, you have to write:

vector<int, allocator<int> > and deque<int, allocator<int> >

instead of:

vector<int> and deque<int>

If your compiler does not support namespaces, then you do not need the using declaration for std.

See Also

binary_function, unary_function



Previous fileTop of documentContentsIndexNext file
©Copyright 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998