##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# Function objects

From cppreference.com
< cpp‎ | utility

A function object is any object for which the function call operator is defined. C++ provides many built-in function objects as well as support for creation and manipulation of new function objects.

### [edit] Polymorphic function wrappers

std::function provides support for storing arbitrary function objects.

function (C++11) | wraps callable object of any type with specified function call signature (class template) [edit]
mem_fn (C++11) | creates a function object out of a pointer to a member (function template) [edit]
bad_function_call (C++11) | the exception thrown when invoking an empty std::function (class) [edit]
invoke (C++17) | invokes any `Callable` object with given arguments (function template) [edit]

### [edit] Bind

std::bind provides support for partial function application, i.e. binding arguments to functions to produce new functions.

bind (C++11) | binds one or more arguments to a function object (function template) [edit]
is_bind_expression (C++11) | indicates that an object is `std::bind` expression or can be used as one (class template) [edit]
is_placeholder (C++11) | indicates that an object is a standard placeholder or can be used as one (class template) [edit]
Defined in namespace `std::placeholders`
_1, _2, _3, _4, ... (C++11) | placeholders for the unbound arguments in a `std::bind` expression (constant) [edit]

### [edit] Negators

std::not_fn creates a function object that negates the result of the callable object passed to it.

not_fn (C++17) | Creates a function object that returns the complement of the result of the function object it holds (function template) [edit]
unary_negate (deprecated) | wrapper function object returning the complement of the unary predicate it holds (class template) [edit]
binary_negate (deprecated) | wrapper function object returning the complement of the binary predicate it holds (class template) [edit]
not1 (deprecated) | constructs custom std::unary_negate object (function template) [edit]
not2 (deprecated) | constructs custom std::binary_negate object (function template) [edit]

### [edit] Searchers

Searchers implementing several string searching algorithms are provided and can be used either directly or with std::search.

default_searcher (C++17) | standard C++ library search algorithm implementation (class template) [edit]
boyer_moore_searcher (C++17) | Boyer-Moore search algorithm implementation (class template) [edit]
boyer_moore_horspool_searcher (C++17) | Boyer-Moore-Horspool search algorithm implementation (class template) [edit]

### [edit] Reference wrappers

Reference wrappers allow reference arguments to be stored in copyable function objects:

reference_wrapper (C++11) | `CopyConstructible` and `CopyAssignable` reference wrapper (class template) [edit]
ref cref (C++11)(C++11) | creates a std::reference_wrapper with a type deduced from its argument (function template) [edit]

### [edit] Operator function objects

C++ defines several function objects that represent common arithmetic and logical operations:

##### Arithmetic operations
plus | function object implementing x + y (class template) [edit]
minus | function object implementing x - y (class template) [edit]
multiplies | function object implementing x * y (class template) [edit]
divides | function object implementing x / y (class template) [edit]
modulus | function object implementing x % y (class template) [edit]
negate | function object implementing -x (class template) [edit]
##### Comparisons
equal_to | function object implementing x == y (class template) [edit]
not_equal_to | function object implementing x != y (class template) [edit]
greater | function object implementing x > y (class template) [edit]
less | function object implementing x < y (class template) [edit]
greater_equal | function object implementing x >= y (class template) [edit]
less_equal | function object implementing x <= y (class template) [edit]
##### Logical operations
logical_and | function object implementing x && y (class template) [edit]
logical_or | function object implementing x || y (class template) [edit]
logical_not | function object implementing !x (class template) [edit]
##### Bitwise operations
bit_and | function object implementing x & y (class template) [edit]
bit_or | function object implementing x | y (class template) [edit]
bit_xor | function object implementing x ^ y (class template) [edit]
bit_not (C++14) | function object implementing ~x (class template) [edit]

### [edit] Old binders and adaptors

Several utilities that provided early functional support are deprecated in C++11 and removed in C++17:

##### Base
unary_function (until C++17) | adaptor-compatible unary function base class (class template) [edit]
binary_function (until C++17) | adaptor-compatible binary function base class (class template) [edit]
##### Binders
binder1st binder2nd (until C++17)(until C++17) | function object holding a binary function and one of its arguments (class template) [edit]
bind1st bind2nd (until C++17)(until C++17) | binds one argument to a binary function (function template) [edit]
##### Function adaptors
pointer_to_unary_function (until C++17) | adaptor-compatible wrapper for a pointer to unary function (class template) [edit]
pointer_to_binary_function (until C++17) | adaptor-compatible wrapper for a pointer to binary function (class template) [edit]
ptr_fun (until C++17) | creates an adaptor-compatible function object wrapper from a pointer to function (function template) [edit]
mem_fun_t mem_fun1_t const_mem_fun_t const_mem_fun1_t (until C++17)(until C++17)(until C++17)(until C++17) | wrapper for a pointer to nullary or unary member function, callable with a pointer to object (class template) [edit]
mem_fun (until C++17) | creates a wrapper from a pointer to member function, callable with a pointer to object (function template) [edit]
mem_fun_ref_t mem_fun1_ref_t const_mem_fun_ref_t const_mem_fun1_ref_t (until C++17)(until C++17)(until C++17)(until C++17) | wrapper for a pointer to nullary or unary member function, callable with a reference to object (class template) [edit]
mem_fun_ref (until C++17) | creates a wrapper from a pointer to member function, callable with a reference to object (function template) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/utility/functional&oldid=90818"