Function objects
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 copy constructible type with specified function call signature   (class template)  | 
|    (C++23)  | 
   wraps callable object of any type with specified function call signature   (class template)  | 
|    (C++11)  | 
   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)(C++23)  | 
   invokes any Callable object with given arguments and possibility to specify return type (since C++23)  (function template)  | 
Identity
std::identity is the identity function object: it returns its argument unchanged.
|    (C++20)  | 
  function object that returns its argument unchanged   (class)  | 
Partial function application
std::bind_front and std::bind provide support for partial function application, i.e. binding arguments to functions to produce new functions.
|    (C++20)(C++23)  | 
   bind a variable number of arguments, in order, to a function object  (function template)  | 
|    (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)  | 
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)  | 
Searchers
Searchers implementing several string searching algorithms are provided and can be used either directly or with std::search.
|    (C++17)  | 
   standard C++ library search algorithm implementation  (class template)  | 
|    (C++17)  | 
   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:
|    (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)  | 
|    (C++20)(C++20)  | 
   get the reference type wrapped in std::reference_wrapper   (class 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)  | 
Constrained comparison function objects
C++20 defines a set of constrained comparison function objects. The equality operators (ranges::equal_to and ranges::not_equal_to) require the types of the arguments to model equality_comparable_with. The relational operators (ranges::less, ranges::greater, ranges::less_equal, and ranges::greater_equal) require the types of the arguments to model totally_ordered_with. The three-way comparison operator (compare_three_way) requires the type to model three_way_comparable_with.
|    (C++20)  | 
   function object implementing x == y   (class)  | 
|    (C++20)  | 
   function object implementing x != y   (class)  | 
|    (C++20)  | 
   function object implementing x < y   (class)  | 
|    (C++20)  | 
   function object implementing x > y   (class)  | 
|    (C++20)  | 
   function object implementing x <= y   (class)  | 
|    (C++20)  | 
   function object implementing x >= y   (class)  | 
|    (C++20)  | 
   function object implementing x <=> y   (class)  | 
Old binders and adaptors
Several utilities that provided early functional support are deprecated in C++11 and removed in C++17 (old negators are deprecated in C++17 and removed in C++20):
 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)  | 
|    (deprecated in C++11)(removed in C++17)  | 
   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)  | 
|    (deprecated in C++17)(removed in C++20)  | 
   wrapper function object returning the complement of the unary predicate it holds   (class template)  | 
|    (deprecated in C++17)(removed in C++20)  | 
   wrapper function object returning the complement of the binary predicate it holds   (class template)  | 
|    (deprecated in C++17)(removed in C++20)  | 
   constructs custom std::unary_negate object   (function template)  | 
|    (deprecated in C++17)(removed in C++20)  | 
   constructs custom std::binary_negate object   (function template)  |