CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 22 Jul 2025 22:12:53 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/functional/function/
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 22 Jul 2025 22:12:53 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"9b1f-rN1deXwc98ujHsQuDUzutDKVRQU"
Content-Encoding: gzip
Class that can wrap any kind of callable element (such as functions and function objects) into a copyable object, and whose type depends solely on its call signature (and not on the callable element type itself).
An object of a function class instantiation can wrap any of the following kinds of callable objects: a function, a function pointer, a pointer to member, or any kind of function object (i.e., an object whose class defines operator(), including closures).
A decay copy of the wrapped callable object is stored internally by the object, which becomes the function's target. The specific type of this target callable object is not needed in order to instantiate the function wrapper class; only its call signature.
The function object can be copied and moved around, and can be used to directly invoke the callable object with the specified call signature (see member operator()).
function objects can also be in a state with no target callable object. In this case they are known as empty functions, and calling them throws a bad_function_call exception.
Note that, except for result_type, the other member types are not always defined.
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<functional>
functions
wrapper classes
- binary_negate
-
functionC++11
-
reference_wrapperC++11
- unary_negate
operator classes
other classes
-
bad_function_callC++11
-
hashC++11
-
is_bind_expressionC++11
-
is_placeholderC++11
-
namespaces
-
placeholdersC++11
-
deprecated
function
-
function::~functionC++11
-
function::functionC++11
member functions
-
function::assignC++11
-
function::operator boolC++11
-
function::operator()C++11
-
function::operator=C++11
-
function::swapC++11
-
function::targetC++11
-
function::target_typeC++11
-
non-member overloads
-
relational operators (function)C++11
-
swap (function)C++11
-
- Reference
- <functional>
- function
class template
<functional>
std::function
template <class T> function; // undefinedtemplate <class Ret, class... Args> class function<Ret(Args...)>;
Function wrapper
An object of a function class instantiation can wrap any of the following kinds of callable objects: a function, a function pointer, a pointer to member, or any kind of function object (i.e., an object whose class defines operator(), including closures).
A decay copy of the wrapped callable object is stored internally by the object, which becomes the function's target. The specific type of this target callable object is not needed in order to instantiate the function wrapper class; only its call signature.
The function object can be copied and moved around, and can be used to directly invoke the callable object with the specified call signature (see member operator()).
function objects can also be in a state with no target callable object. In this case they are known as empty functions, and calling them throws a bad_function_call exception.
Template parameters
- T
- A type.
The generic template is not defined. Only the one that specializes T as the function typeRet(Args...)
.
- Ret
- The type resulting from invoking the functional call.
- Args
- Types of the arguments.
This is a template parameter pack with any number of types.
For pointers to members, the first type shall be a reference to the class type the member pointed is a member.
Member types
member type | definition |
---|---|
result_type | Ret |
argument_type | If Args... is a single type, it is an alias of this single type. Otherwise, not defined. |
first_argument_type | If Args... is a pack of exactly two types, it is an alias of the first type. Otherwise, not defined. |
second_argument_type | If Args... is a pack of exactly two types, it is an alias of the second type. Otherwise, not defined. |
Member functions
- (constructor)
- Construct function wrapper (public member function)
- (destructor)
- Destroy function wrapper (public member function)
- operator=
- Assign function object (public member function)
- assign
- Assign target and allocator (public member function)
- operator bool
- Check if callable (public member function)
- operator()
- Call target (public member function)
- target_type
- Target type_info (public member function)
- target
- Get pointer to target (public member function)
- swap
- Swap targets (public member function)
Non-member function overloads
- relational operators
- Relational operators for function vs null pointer (function template)
- swap
- Exchanges the targets (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us