Namespaces
Variants

std::unary_function

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de bibliotecas (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación tripartita
(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)

Adaptadores y enlazadores antiguos
(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< typename ArgumentType, typename ResultType >
struct unary_function;
(obsoleto en C++11)
(eliminado en C++17)

std::unary_function es una clase base para crear objetos función con un argumento.

std::unary_function no define operator(); se espera que las clases derivadas lo definan. std::unary_function proporciona solo dos tipos: 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::not1, requieren que los objetos función que adaptan tengan ciertos tipos definidos; std::not1 requiere que el objeto función que se está adaptando tenga un tipo llamado argument_type. Derivar objetos función que toman un argumento de std::unary_function es una forma sencilla de hacerlos compatibles con esos adaptadores.

std::unary_function está obsoleto en C++11.

Tipos de miembros

Tipo Definición
argument_type ArgumentType
result_type ResultType

Ejemplo

#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct less_than_7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};
int main()
{
    std::vector<int> v(10, 7);
    v[0] = v[1] = v[2] = 6;
    std::cout << std::count_if(v.begin(), v.end(), std::not1(less_than_7()));
    // C++11 solution:
    // Cast to std::function<bool (int)> somehow - even with a lambda
    // std::cout << std::count_if(v.begin(), v.end(),
    //     std::not1(std::function<bool (int)>([](int i) { return i < 7; })));
}

Salida:

7

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 firma 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 unaria
(plantilla de clase)
(deprecated in C++11) (removed in C++17)
clase base de función binaria compatible con adaptadores
(plantilla de clase)