Namespaces
Variants

C++ named requirements: Callable

From cppreference.net
C++ named requirements

Callable 型は、 INVOKE および INVOKE<R> 操作(例: std::function std::bind std::thread::thread などで使用)が適用可能な型です。

INVOKE は、ライブラリ関数 std::invoke を使用して明示的に実行できます。

(C++17以降)

INVOKE<R> は、ライブラリ関数 std::invoke_r を使用して明示的に実行できます。

(C++23以降)

目次

要件

T は、以下の条件を満たす場合 Callable を満たします

与えられた

  • f , 型 T のオブジェクト,
  • ArgTypes , 適切な引数型のリスト,
  • R , 適切な戻り値の型.

以下の式は有効でなければなりません:

要件
INVOKE<R> ( f, std:: declval < ArgTypes > ( ) ... ) この式は未評価文脈において well-formed である。

注記

Pointers to data members は、関数呼び出しが行われないにもかかわらず Callable です。

標準ライブラリ

さらに、以下の標準ライブラリ機能は Callable 型を(単なる FunctionObject だけでなく)受け入れます:

(C++11)
任意のコピー構築可能な呼び出し可能オブジェクトのコピー可能ラッパー
(クラステンプレート)
指定された呼び出しシグネチャで修飾子をサポートする任意の呼び出し可能オブジェクトのムーブ専用ラッパー
(クラステンプレート)
指定された呼び出しシグネチャで修飾子をサポートする任意のコピー構築可能な呼び出し可能オブジェクトのコピー可能ラッパー
(クラステンプレート)
任意の呼び出し可能オブジェクトの非所有ラッパー
(クラステンプレート)
(C++11)
関数オブジェクトに1つ以上の引数をバインドする
(関数テンプレート)
(C++20) (C++23)
可変個の引数を順番に関数オブジェクトにバインドする
(関数テンプレート)
CopyConstructible かつ CopyAssignable な参照ラッパー
(クラステンプレート)
(C++11) (C++20で削除) (C++17)
呼び出し可能オブジェクトを引数のセットで呼び出した結果の型を推論する
(クラステンプレート)
(C++11)
個別のスレッドを管理する
(クラス)
(C++20)
std::thread で自動結合とキャンセルをサポート
(クラス)
(C++11)
複数のスレッドから呼び出されても関数を一度だけ呼び出す
(関数テンプレート)
(C++11)
関数を非同期で(場合によっては新しいスレッドで)実行し、結果を保持する std::future を返す
(関数テンプレート)
非同期取得のために戻り値を格納する関数をパッケージ化する
(クラステンプレート)

関連項目

型が指定された引数型で( std::invoke によって呼び出されるかのように)呼び出し可能かどうかをチェックする
(クラステンプレート)
呼び出し可能な型が指定された引数型のセットで呼び出し可能であることを指定する
(コンセプト)
(C++17) (C++23)
任意の Callable オブジェクトを指定された引数で呼び出す および戻り値の型を指定する可能性 (C++23以降)
(関数テンプレート)