std::function<R(Args...)>::operator() - cppreference.com

From cppreference.com

Roperator()(Args...args)const;(since C++11)Invokes the stored callable function target with the parameters args.

Effectively does

INVOKE<R>

(f,std::forward<Args>(args)...), where f is the

target object

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

std::bad_function_call

if *this does not store a callable function target, i.e. !*this==true.

Example

The following example shows how

std::function

can be passed to other functions by value. Also, it shows how

std::function

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