名前空間
変種
操作

関数オブジェクト

提供: cppreference.com
< cpp‎ | utility
 
 
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
バインド
(C++11)
関数呼び出し
(C++17)
恒等関数オブジェクト
(C++20)
参照ラッパー
(C++11)(C++11)
演算子ラッパー
否定子
(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以前)
 

関数オブジェクトは関数呼び出し演算子が定義されている任意のオブジェクトです。 C++ は多数の組み込みの関数オブジェクトと新しい関数オブジェクトの作成や操作に対するサポートが提供されます。

目次

[編集] 関数ラッパー

std::function は任意の関数オブジェクトの格納に対するサポートを提供します。

(C++11)
指定された関数呼び出しシグネチャを持つ任意の型の呼び出し可能なオブジェクトをラップします
(クラステンプレート) [edit]
空の std::function を呼び出したときに投げられる例外
(クラス) [edit]
(C++11)
メンバポインタから関数オブジェクトを作成します
(関数テンプレート) [edit]

[編集] 関数呼び出し

std::invoke は任意の Callable オブジェクトを指定した引数で呼び出すことができます。

(C++17)
任意の Callable なオブジェクトを指定された引数で呼びます
(関数テンプレート) [edit]

[編集] 恒等

std::identity は恒等関数オブジェクトです。 引数を変更せずに返します。

(C++20)
引数を変更せずに返す関数オブジェクト
(クラス) [edit]

[編集] 束縛

std::bind関数の部分適用、つまり新しい関数を生成するための関数への引数束縛に対するサポートを提供します。

(C++11)
関数オブジェクトに1つ以上の引数をバインドします
(関数テンプレート) [edit]
オブジェクトが std::bind 式であるか、 std::bind 式として使用できることを表します
(クラステンプレート) [edit]
オブジェクトが標準のプレースホルダであるか、プレースホルダとして使用できることを表します
(クラステンプレート) [edit]
名前空間 std::placeholders で定義
std::bind 式におけるバインドされない引数のためのプレースホルダ
(定数) [edit]

[編集] 否定子

std::not_fn は呼び出し可能なオブジェクトの結果を否定する関数オブジェクトを作成します。

(C++17)
保持する関数オブジェクトの結果の否定を返す関数オブジェクトを作成します
(関数テンプレート) [edit]

[編集] 検索子

いくつかの文字列検索アルゴリズムを実装する検索子が提供され、直接または std::search と共に使用することができます。

標準 C++ ライブラリの検索アルゴリズムの実装
(クラステンプレート) [edit]
ボイヤー・ムーア検索アルゴリズムの実装
(クラステンプレート) [edit]
ボイヤー・ムーア・ホースプール検索アルゴリズムの実装
(クラステンプレート) [edit]

[編集] 参照ラッパー

参照ラッパーを使用すると参照引数をコピー可能な関数オブジェクトに格納できます。

CopyConstructible かつ CopyAssignable な参照ラッパー
(クラステンプレート) [edit]
(C++11)(C++11)
引数から推定される型の std::reference_wrapper を作成します
(関数テンプレート) [edit]

[編集] 演算子関数オブジェクト

一般的な算術演算子および論理演算子を表す関数オブジェクトがいくつか定義されています。

算術演算子
x + y を実装する関数オブジェクト
(クラステンプレート) [edit]
x - y を実装する関数オブジェクト
(クラステンプレート) [edit]
x * y を実装する関数オブジェクト
(クラステンプレート) [edit]
x / y を実装する関数オブジェクト
(クラステンプレート) [edit]
x % y を実装する関数オブジェクト
(クラステンプレート) [edit]
-x を実装する関数オブジェクト
(クラステンプレート) [edit]
比較
x == y を実装する関数オブジェクト
(クラステンプレート) [edit]
x != y を実装する関数オブジェクト
(クラステンプレート) [edit]
x > y を実装する関数オブジェクト
(クラステンプレート) [edit]
x < y を実装する関数オブジェクト
(クラステンプレート) [edit]
x >= y を実装する関数オブジェクト
(クラステンプレート) [edit]
x <= y を実装する関数オブジェクト
(クラステンプレート) [edit]
論理演算子
x && y を実装する関数オブジェクト
(クラステンプレート) [edit]
x || y を実装する関数オブジェクト
(クラステンプレート) [edit]
!x を実装する関数オブジェクト
(クラステンプレート) [edit]
ビット演算子
x & y を実装する関数オブジェクト
(クラステンプレート) [edit]
x | y を実装する関数オブジェクト
(クラステンプレート) [edit]
x ^ y を実装する関数オブジェクト
(クラステンプレート) [edit]
(C++14)
~x を実装する関数オブジェクト
(クラステンプレート) [edit]

[編集] 古いバインダとアダプタ

以前提供されていた関数オブジェクトサポートのためのいくつかのユーティリティは C++11 で非推奨になり C++17 で削除され、またいくつかは C++17 で非推奨になり C++20 で削除されました。

基本
(C++11で非推奨)(C++17で削除)
アダプタ互換な単項関数の基底クラス
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
アダプタ互換な二項関数の基底クラス
(クラステンプレート) [edit]
バインダ
(C++11で非推奨)(C++17で削除)
二項引数とその引数1つを保持する関数オブジェクト
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
二項関数に引数を1つ束縛します
(関数テンプレート) [edit]
関数アダプタ
(C++11で非推奨)(C++17で削除)
単項関数へのポインタに対するアダプタ互換なラッパー
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
二項関数へのポインタに対するアダプタ互換なラッパー
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
関数ポインタからアダプタ互換な関数オブジェクトを作成します
(関数テンプレート) [edit]
(C++11で非推奨)(C++17で削除)
オブジェクトへのポインタを使用して呼ぶことができる、引数なしまたは引数1個のメンバ関数へのポインタに対するラッパー
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
メンバ関数ポインタから、オブジェクトへのポインタを使用して呼ぶことができるラッパーを作成します
(関数テンプレート) [edit]
オブジェクトへの参照を使用して呼ぶことができる、引数なしまたは引数1個のメンバ関数へのポインタに対するラッパー
(クラステンプレート) [edit]
(C++11で非推奨)(C++17で削除)
メンバ関数ポインタから、オブジェクトへの参照を使用して呼ぶことができるラッパーを作成します
(関数テンプレート) [edit]
否定子
(C++17で非推奨)(C++20で削除)
保持する単項述語の否定を返すラッパー関数オブジェクト
(クラステンプレート) [edit]
(C++17で非推奨) (C++20で削除)
保持する二項述語の否定を返すラッパー関数オブジェクト
(クラステンプレート) [edit]
(C++17で非推奨)(C++20で削除)
カスタム std::unary_negate オブジェクトを構築します
(関数テンプレート) [edit]
(C++17で非推奨)(C++20で削除)
カスタム std::binary_negate オブジェクトを構築します
(関数テンプレート) [edit]