From cppreference.com
Roperator()(Args...args)const;(since C++11)Invokes the stored callable function target with the parameters args.
Effectively does
(f,std::forward<Args>(args)...), where f is the
of *this.
Parameters
args - parameters to pass to the stored callable function target Return value
None if R is void. Otherwise the return value of the invocation of the stored callable object.
Exceptions
Throws
if *this does not store a callable function target, i.e. !*this==true.
Example
The following example shows how
can be passed to other functions by value. Also, it shows how
can store lambdas.
Run this code
#include<functional>#include<iostream>voidcall(std::function<int()>f)// can be passed by value{std::cout<<f()<<'\n';}intnormal_function(){return42;}intmain(){intn=1;std::function<int()>f;try{call(f);}catch(conststd::bad_function_call&ex){std::cout<<ex.what()<<'\n';}f=[&n](){returnn;};call(f);n=2;call(f);f=normal_function;call(f);std::function<void(std::string,int)>g;g=[](std::stringstr,inti){std::cout<<str<<' '<<i<<'\n';};g("Hi",052);}Possible output:
bad_function_call 1 2 42 Hi 42 See also