std::function<R(Args...)>::operator() (3) - Linux Manuals

std::function<R(Args...)>::operator(): std::function<R(Args...)>::operator()


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


R operator()( 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 and INVOKE is the operation described in Callable.


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.


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


The following example shows how std::function can passed to other functions by value. Also, it shows how std::function can store lambdas.
// Run this code

  #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; };

      n = 2;

      f = normal_function;



See also

                  calls the stored function
operator() (public member function of std::reference_wrapper<T>)

bad_function_call the exception thrown when invoking an empty std::function

invoke invokes any Callable object with given arguments
                  (function template)