名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | 工具‎ | 函式物件‎ | function
 
 
 
函式物件
函式呼叫
(C++17起)(C++23起)
恆等函式物件
(C++20)
引用包裝器
(C++11起)(C++11起)
透明運算子包裝器
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

舊繫結器和介面卡
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)  
(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
(直到 C++17*)(直到 C++17*)
(直到 C++17*)(直到 C++17*)

(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
 
 
R operator()( Args... args ) const;
(C++11 起)

使用引數 args 呼叫儲存的可呼叫函式目標。

實質上執行 INVOKE<R>(f, std::forward<Args>(args)...),其中 f*this目標物件

目錄

[編輯] 引數

args - 傳遞給儲存的可呼叫函式目標的引數

[編輯] 返回值

如果 Rvoid,則無。否則是儲存的可呼叫物件呼叫的返回值。

[編輯] 異常

如果 *this 沒有儲存可呼叫函式目標(即 !*this == true),則丟擲 std::bad_function_call

[編輯] 示例

以下示例展示瞭如何按值將 std::function 傳遞給其他函式。此外,它還展示了 std::function 如何儲存 lambda 表示式。

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

可能的輸出

bad_function_call
1
2
42
Hi 42

[編輯] 參閱

呼叫目標
(std::move_only_function 的公共成員函式) [編輯]
呼叫儲存的函式
(std::reference_wrapper<T> 的公共成員函式) [編輯]
呼叫空的 std::function 時丟擲的異常
(類) [編輯]
(C++17起)(C++23起)
使用給定引數呼叫任何 可呼叫 (Callable) 物件 並可能指定返回型別(C++23 起)
(函式模板) [編輯]