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 |
[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) |