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

< cpp‎ | utility‎ | functional‎ | function

R operator()( Args... args ) const; |  | (C++11 起)

以参数 `args` 调用存储的可调用函数目标。

等效于进行 INVOKE<R>(f, std::forward<Args>(args)...) ，其中 `f` 是 `*this` 的目标对象，且 `INVOKE` 是描述于可调用 (Callable) 的操作。

### 参数

args | - | 传递给存储的可调用函数目标的参数

### 返回值

若 `R` 为 void 则为无。否则为存储的可调用对象的调用返回值。

### 异常

- 若不存储可调用函数目标，即 !*this == true ，则抛出 std::bad_function_call 。

### 示例

下列示例展示能如何将 std::function 按值传递给另一函数。而且，它演示 std::function 能如何存储 lambda 。

    #include <iostream>
    #include <functional>

    void call(std::function<int()> f)  // 能按值传递
    {
        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);
    }

输出：

    1
    2
    42

### 参阅

operator() (C++23) | 调用目标 (`std::move_only_function<R(Args...) cv ref noexcept(noex)>` 的公开成员函数)
operator() | 调用其所存储的函数 (`std::reference_wrapper<T>` 的公开成员函数)
bad_function_call (C++11) | 调用空的 std::function 时抛出的异常 (类)
invoke invoke_r (C++17)(C++23) | 以给定实参和可能指定的返回类型 (C++23 起)调用任意可调用 (Callable) 对象 (函数模板)