Namespaces
Variants

std::binary_function

Desde es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
Objetos función
Invocación de funciones
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de operadores transparentes
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Antiguos adaptadores y enlazadores
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)
(hasta C++17*)  
(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta C++20*)
(hasta C++17*)(hasta C++17*)
(hasta C++17*)(hasta C++17*)

(hasta C++17*)
(hasta C++17*)(hasta C++17*)(hasta C++17*)(hasta C++17*)
(hasta C++20*)
(hasta 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 lo definan. std::binary_function proporciona solo tres tipos: first_argument_type, second_argument_type y result_type — definidos por los parámetros de la 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 fácil 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)