Namespaces
Variants
Actions

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

From cppreference.com
< cpp‎ | utility‎ | functional‎ | function
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
Function objects
(C++17)(C++23)
Identity function object
(C++20)
(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++20*)
(until C++20*)
(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++20*)
(until C++20*)
 
 
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.

[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

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

[edit] 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>
 
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;
 try
 {
 call(f);
 }
 catch (const std::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_call
1
2
42
Hi 42

[edit] See also

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]
the exception thrown when invoking an empty std::function
(class) [edit]
(C++17)(C++23)
invokes any Callable object with given arguments and possibility to specify return type(since C++23)
(function template) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/functional/function/operator()&oldid=176858"

AltStyle によって変換されたページ (->オリジナル) /