Namespaces
Variants

std:: binary_function

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
binary_function
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Definido en el encabezado <functional>
template <

class Arg1,
class Arg2,
class Result

> struct binary_function ;
(obsoleto en C++11)
(eliminado en C++17)

std::binary_function es una clase base para crear objetos función con dos argumentos.

std::binary_function no define operator ( ) ; se espera que las clases derivadas definan esto. std::binary_function proporciona solo tres tipos - first_argument_type , second_argument_type y result_type - definidos por los parámetros de plantilla.

Algunos adaptadores de objetos función de la biblioteca estándar, como std::not2 , requieren que los objetos función que adaptan tengan ciertos tipos definidos; std::not2 requiere que el objeto función que se está adaptando tenga dos tipos llamados first_argument_type y second_argument_type . Derivar objetos función que toman dos argumentos de std::binary_function es una manera sencilla de hacerlos compatibles con esos adaptadores.

std::binary_function está obsoleto en C++11 y eliminado en C++17.

Tipos de miembros

Tipo Definición
first_argument_type Arg1
second_argument_type Arg2
result_type Result

Ejemplo

#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';
}

Salida:

A != E : true
B != D : true
C != C : false
D != B : true
E != A : true

Véase también

(C++11)
contenedor copiable de cualquier objeto invocable copiable
(plantilla de clase)
contenedor no copiable de cualquier objeto invocable que soporte calificadores en una signatura de llamada dada
(plantilla de clase)
(deprecated in C++11) (removed in C++17)
crea un contenedor de objeto función compatible con adaptadores a partir de un puntero a función
(plantilla de función)
(deprecated in C++11) (removed in C++17)
contenedor compatible con adaptadores para un puntero a función binaria
(plantilla de clase)
(deprecated in C++11) (removed in C++17)
clase base de función unaria compatible con adaptadores
(plantilla de clase)