Function objects

From cppreference.com
< cpp‎ | utility
 
 
 
Function objects
Function wrappers
(C++11)
(C++11)
Bind
(C++11)
Function invocation
(C++17)
Reference wrappers
(C++11)(C++11)
Operator wrappers
Negators
(deprecated)
(deprecated)

(deprecated)
(deprecated)
Searchers
Old binders and adaptors
(until C++17)
(until C++17)
(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)(until C++17)
(until C++17)(until C++17)

(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
 

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.

Function wrappers

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

(C++11)
wraps callable object of any type with specified function call signature
(class template)
the exception thrown when invoking an empty std::function
(class)
(C++11)
creates a function object out of a pointer to a member
(function template)

Function invocation

std::invoke can invoke any Callable object with given arguments.

(C++17)
invokes any Callable object with given arguments
(function template)

Bind

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

(C++11)
binds one or more arguments to a function object
(function template)
indicates that an object is std::bind expression or can be used as one
(class template)
indicates that an object is a standard placeholder or can be used as one
(class template)
Defined in namespace std::placeholders
placeholders for the unbound arguments in a std::bind expression
(constant)

Negators

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

(C++17)
Creates a function object that returns the complement of the result of the function object it holds
(function template)
(deprecated in C++17)
wrapper function object returning the complement of the unary predicate it holds
(class template)
(deprecated in C++17)
wrapper function object returning the complement of the binary predicate it holds
(class template)
(deprecated in C++17)
constructs custom std::unary_negate object
(function template)
(deprecated in C++17)
constructs custom std::binary_negate object
(function template)

Searchers

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

standard C++ library search algorithm implementation
(class template)
Boyer-Moore search algorithm implementation
(class template)
Boyer-Moore-Horspool search algorithm implementation
(class template)

Reference wrappers

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

CopyConstructible and CopyAssignable reference wrapper
(class template)
(C++11)(C++11)
creates a std::reference_wrapper with a type deduced from its argument
(function template)

Operator function objects

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

Arithmetic operations
function object implementing x + y
(class template)
function object implementing x - y
(class template)
function object implementing x * y
(class template)
function object implementing x / y
(class template)
function object implementing x % y
(class template)
function object implementing -x
(class template)
Comparisons
function object implementing x == y
(class template)
function object implementing x != y
(class template)
function object implementing x > y
(class template)
function object implementing x < y
(class template)
function object implementing x >= y
(class template)
function object implementing x <= y
(class template)
Logical operations
function object implementing x && y
(class template)
function object implementing x || y
(class template)
function object implementing !x
(class template)
Bitwise operations
function object implementing x & y
(class template)
function object implementing x | y
(class template)
function object implementing x ^ y
(class template)
(C++14)
function object implementing ~x
(class template)

Old binders and adaptors

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

Base
(deprecated in C++11)(removed in C++17)
adaptor-compatible unary function base class
(class template)
(deprecated in C++11)(removed in C++17)
adaptor-compatible binary function base class
(class template)
Binders
(deprecated in C++11)(removed in C++17)
function object holding a binary function and one of its arguments
(class template)
(deprecated in C++11)(removed in C++17)
binds one argument to a binary function
(function template)
Function adaptors
(deprecated in C++11)(removed in C++17)
adaptor-compatible wrapper for a pointer to unary function
(class template)
(deprecated in C++11)(removed in C++17)
adaptor-compatible wrapper for a pointer to binary function
(class template)
(deprecated in C++11)(removed in C++17)
creates an adaptor-compatible function object wrapper from a pointer to function
(function template)
(deprecated in C++11)(removed in C++17)
wrapper for a pointer to nullary or unary member function, callable with a pointer to object
(class template)
(deprecated in C++11)(removed in C++17)
creates a wrapper from a pointer to member function, callable with a pointer to object
(function template)
wrapper for a pointer to nullary or unary member function, callable with a reference to object
(class template)
(deprecated in C++11)(removed in C++17)
creates a wrapper from a pointer to member function, callable with a reference to object
(function template)