Namespaces
Variants

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

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変長引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
swap と 型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
共通の語彙型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
関数オブジェクト
関数呼び出し
(C++17)(C++23)
恒等関数オブジェクト
(C++20)
透過的な演算子ラッパー
(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 - 格納された呼び出し可能な関数ターゲットに渡すパラメータ

戻り値

Rが void の場合はなし。それ以外の場合、格納された呼び出し可能オブジェクトの呼び出しの戻り値。

例外

std::bad_function_call をスローする(throwする)条件: * this が呼び出し可能な関数ターゲットを保持していない場合、すなわち ! * this == true の場合。

例

以下の例は、 std::function が値渡しで他の関数に渡せる方法を示しています。また、 std::function がラムダ式を格納できることも示しています。

#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以降)
(関数テンプレート)