std::binary_function
ja.cppreference.net より
| ヘッダ <functional>
|
||
template<
class Arg1,
class Arg2,
class Result
> struct binary_function;
|
で定義 (C++11で非推奨) (C++17で削除) |
|
std::binary_function は、2つの引数を取る関数オブジェクトを作成するための基底クラスです。
std::binary_function は operator() を定義しません。派生クラスがこれを定義することが期待されます。 std::binary_function は、テンプレートパラメータによって定義される first_argument_type、second_argument_type、result_type の3つの型のみを提供します。
一部の標準ライブラリ関数オブジェクトアダプタ、例えば std::not2 は、それらが適応する関数オブジェクトが特定の型を定義していることを要求します。 std::not2 は、適応される関数オブジェクトが first_argument_type および second_argument_type という名前の2つの型を持つことを要求します。2つの引数を取る関数オブジェクトを std::binary_function から派生させることは、それらをこれらのアダプタと互換性を持たせる簡単な方法です。
std::binary_function は C++11 で非推奨となり、C++17 で削除されました。
メンバー型
| 型 | 定義 |
first_argument_type
|
Arg1
|
second_argument_type
|
Arg2
|
result_type
|
Result
|
例
このコードを実行
#include <algorithm> #include <functional> #include <iostream> #include <vector> struct same : std::binary_function<int, int, bool> { bool operator()(int a, int b) const { return a == b; } }; int main() { std::vector<char> v1{'A', 'B', 'C', 'D', 'E'}; std::vector<char> v2{'E', 'D', 'C', 'B', 'A'}; std::vector<bool> v3(v1.size()); std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), std::not2(same())); std::cout << std::boolalpha; for (std::size_t i = 0; i < v1.size(); ++i) std::cout << v1[i] << " != " << v2[i] << " : " << v3[i] << '\n'; }
出力:
A != E : true B != D : true C != C : false D != B : true E != A : true
関連項目
|
(C++11)
|
任意のコピー構築可能な呼び出し可能オブジェクトのコピー可能ラッパー
(クラステンプレート) |
|
(C++23)
|
指定された呼び出しシグネチャで修飾子をサポートする任意の呼び出し可能オブジェクトのムーブ専用ラッパー
(クラステンプレート) |
|
(C++11で非推奨)
(C++17で削除)
|
関数ポインタからアダプタ互換な関数オブジェクトラッパーを作成する
(関数テンプレート) |
|
(C++11で非推奨)
(C++17で削除)
|
二項関数へのポインタのアダプタ互換ラッパー
(クラステンプレート) |
|
(C++11で非推奨)
(C++17で削除)
|
アダプタ互換な単項関数の基底クラス
(クラステンプレート) |