std::function
From Cppreference
< cpp | utility | functional
C++ Standard Library | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Utilities library | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Function objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::function | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <functional>
|
||
template< class >
class function; /* undefined */ |
(since C++11) | |
template< class R, class... Args >
class function<R(Args...)> |
(since C++11) | |
Class template std::function is a general-purpose polymorphic function wrapper. Instances of std::function can store, copy, and invoke any callable target -- functions, lambda expressions, bind expressions, or other function objects.
Contents[hide] |
[edit] Member types
type | definition |
result_type | R |
argument_type | T if sizeof...(Args)==1 and T is the first and only type in Args... |
first_argument_type | T1 if sizeof...(Args)==2 and T1 is the first of the two types in Args... |
second_argument_type | T2 if sizeof...(Args)==2 and T2 is the first of the two types in Args... |
[edit] Member functions
constructs a new std::function instance (public member function) |
|
destroys a std::function instance (public member function) |
|
replaces a std::function (public member function) |
|
exchanges the targets of two std::functions (public member function) |
|
assigns a new target to an std::function (public member function) |
|
checks if std::function has a target (public member function) |
|
invokes the target of an std::function (public member function) |
|
obtains the typeid of the stored target of an std::function (public member function) |
|
obtains a pointer to the stored target of an std::function (public member function) |
[edit] Non-member functions
(C++11)
|
specializes the std::swap algorithm (function template) |
compares an std::function with std::nullptr (function template) |
[edit] Helper classes
specializes the std::uses_allocator type trait (class template specialization) |
[edit] Example
#include <iostream> #include <functional> void call(std::function<int()> f) { // can be passed by value std::cout << f() << '\n'; } int normal_function() { return 42; } int main() { int n = 1; std::function<int()> f = [&n](){return n;}; // target a lambda std::cout << f() << '\n'; // call directly n = 2; call(f); // pass to another function f = normal_function; // now target a plain function call(f); }
Output:
1 2 42
[edit] See also
(C++11)
|
the exception thrown when invoking an empty std::function (class) |
(C++11)
|
binds an object to a pointer to its member function to form independent function object (function template) |