名前空間
変種
操作

C++ 名前付き要件: Callable

From cppreference.com
 
 
C++ 名前付き要件
 

Callable 型は、INVOKE および INVOKE<R> 操作 (例えば、std::functionstd::bind、および std::thread::thread で使用される) が適用可能な型です。

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

(C++17以降)

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

(C++23から)

目次

[編集] 要件

TCallable を満たすのは、

以下を考えます。

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

以下の式が有効である必要があります

Expression 要件
INVOKE<R>(f, std::declval<ArgTypes>()...) この式は、評価されないコンテキストで整形式です。

[編集] 備考

データメンバーへのポインターは、関数呼び出しが行われない場合でも Callable です。

[編集] 標準ライブラリ

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

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

[編集] 関連項目

ある型が与えられた引数型で(std::invokeのように)呼び出し可能であるかをチェックする
(クラステンプレート) [編集]
呼び出し可能型が、与えられた一連の引数型で呼び出し可能であることを規定する
(コンセプト) [編集]
(C++17)(C++23)
与えられた引数で任意の Callable オブジェクトを呼び出す および戻り値の型を指定する可能性(C++23 以降)
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)