Function objects
From cppreference.com
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.
Contents |
[edit] Polymorphic 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) |
(C++11)
|
creates a function object out of a pointer to a member (function template) |
(C++11)
|
the exception thrown when invoking an empty std::function (class) |
(C++17)
|
invokes any Callable object with given arguments (function template) |
[edit] 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) |
(C++11)
|
indicates that an object is std::bind expression or can be used as one (class template) |
(C++11)
|
indicates that an object is a standard placeholder or can be used as one (class template) |
Defined in namespace
std::placeholders |
|
(C++11)
|
placeholders for the unbound arguments in a std::bind expression (constant) |
[edit] Reference wrappers
Reference wrappers allow reference arguments to be stored in copyable function objects:
(C++11)
|
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) |
[edit] 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) |
Negators |
|
wrapper function object returning the complement of the unary predicate it holds (class template) |
|
wrapper function object returning the complement of the binary predicate it holds (class template) |
|
constructs custom std::unary_negate object (function template) |
|
constructs custom std::binary_negate object (function template) |
[edit] Deprecated in C++11
Several utilities that provided early functional support are deprecated in C++11:
Base |
|
(until C++17)
|
adaptor-compatible unary function base class (class template) |
(until C++17)
|
adaptor-compatible binary function base class (class template) |
Binders |
|
(until C++17)(until C++17)
|
function object holding a binary function and one of its arguments (class template) |
(until C++17)(until C++17)
|
binds one argument to a binary function (function template) |
Function adaptors |
|
(until C++17)
|
adaptor-compatible wrapper for a pointer to unary function (class template) |
(until C++17)
|
adaptor-compatible wrapper for a pointer to binary function (class template) |
(until C++17)
|
creates an adaptor-compatible function object wrapper from a pointer to function (function template) |
(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) |
(until C++17)
|
creates a wrapper from a pointer to member function, callable with a pointer to object (function template) |
(until C++17)(until C++17)(until C++17)(until C++17)
|
wapper for a pointer to nullary or unary member function, callable with a reference to object (class template) |
(until C++17)
|
creates a wrapper from a pointer to member function, callable with a reference to object (function template) |