|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Old binders and adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Member functions | ||||
(until C++17) | ||||
function::operator() | ||||
Non-member functions | ||||
(until C++20) | ||||
Helper classes | ||||
(until C++17) | ||||
Deduction guides(C++17) |
R operator()( Args...args)const; | (since C++11) | |
Invokes the stored callable function target with the parametersargs.
Effectively doesINVOKE<R>(f,std::forward<Args>(args)...), wheref is thetarget object of*this.
Contents |
args | - | parameters to pass to the stored callable function target |
None ifR
isvoid. Otherwise the return value of the invocation of the stored callable object.
Throwsstd::bad_function_call if*this does not store a callable function target, i.e.!*this==true.
The following example shows howstd::function can be passed to other functions by value. Also, it shows howstd::function can store lambdas.
#include <functional>#include <iostream> void call(std::function<int()> f)// can be passed by value{std::cout<< f()<<'\n';} int normal_function(){return42;} int main(){int n=1;std::function<int()> f;try{ call(f);}catch(conststd::bad_function_call& ex){std::cout<< ex.what()<<'\n';} f=[&n](){return n;}; call(f); n=2; call(f); f= normal_function; call(f); std::function<void(std::string,int)> g; g=[](std::string str,int i){std::cout<< str<<' '<< i<<'\n';}; g("Hi",052);}
Possible output:
bad_function_call1242Hi 42
invokes the target (public member function of std::move_only_function )[edit] | |
calls the stored function (public member function of std::reference_wrapper<T> )[edit] | |
(C++11) | the exception thrown when invoking an emptystd::function (class)[edit] |
(C++17)(C++23) | invokes anyCallable object with given argumentsand possibility to specify return type(since C++23) (function template)[edit] |