std::function::operator()

From cppreference.com
< cpp‎ | utility‎ | functional‎ | function
 
 
Utilities library
Type support (basic types, RTTI, type traits)
Dynamic memory management
Error handling
Program utilities
Variadic functions
Date and time
Function objects
(C++11)
Relational operators
Optional and any
(C++17)
(C++17)
Pairs and tuples
(C++11)
(C++17)
Swap, forward and move
(C++14)
(C++11)
(C++11)
Type operations
(C++11)
(C++17)
 
Function objects
Function wrappers
(C++11)
(C++11)
(C++17)
Bind
(C++11)
(C++11)
(C++11)
Reference wrappers
(C++11)(C++11)
Operator wrappers
Negators
(deprecated)
(deprecated)
(deprecated)
(deprecated)
Searchers
Old binders and adaptors
(until C++17)
(until C++17)
(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)
(until C++17)(until C++17)(until C++17)(until C++17)
(until C++17)(until C++17)
(until C++17)(until C++17)
 
 
R operator()( Args... args ) const;
(since C++11)

Invokes the stored callable function target with the parameters args.

Effectively does INVOKE(f, std::forward<Args>(args)..., R), where f is the target object of *this and INVOKE is the operation described in Callable.

Contents

[edit] Parameters

args - parameters to pass to the stored callable function target

[edit] Return value

None if R is void. Otherwise the return value of the invocation of the stored callable object.

[edit] Exceptions

[edit] Example

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

#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; };
    call(f);
 
    n = 2;
    call(f); 
 
    f = normal_function; 
    call(f);
}

Output:

1
2
42

[edit] See also

calls the stored function
(public member function of std::reference_wrapper)
the exception thrown when invoking an empty std::function
(class)
(C++17)
invokes any Callable object with given arguments
(function template)