<functional>
Define las funciones de biblioteca de plantillas estándar (STL) que ayudan a construir objetos function, también conocido como funtores y sus carpetas.Una función es un objeto de un tipo que define operator().Un objeto de función puede ser un puntero a función, pero por lo general, el objeto se utiliza para almacenar información adicional que se puede tener acceso durante una llamada de función.
#include <functional>
Comentarios
Los algoritmos requieren dos tipos de objetos de función: unario y binario.Los objetos de función unario requieren un argumento y objetos binarios de función requieren dos argumentos.Un objeto de función y punteros a función se pueden pasar como un predicado a un algoritmo, pero los objetos de función también son adaptables y aumentar el alcance, flexibilidad y eficiencia de la STL.Si, por ejemplo, un valor necesario para enlazarse a una función antes de pasarlo a un algoritmo, un puntero a función no puede utilizarse.Adaptadores de la función conversión punteros a función en objetos de función adaptable que se pueden enlazar a un valor.El encabezado <functional> También contiene los adaptadores de función miembro que permiten las funciones de miembro que se llamará como objetos function adaptable.Las funciones son adaptables si tienen las declaraciones de tipo anidado especificando su argumento y tipos de valor devueltos.El estándar de C++ requiere que se aplique esta capacidad de adaptación al tener todas las clases de objeto estándar heredan de las clases de base de unary_function o binary_function.Objetos de función y sus adaptadores permiten la STL actualizar las aplicaciones existentes y ayudar a integrar la STL en el entorno de programación de C++.
Extensiones TR1
En la aplicación de Visual C++ de TR1 se agregan las siguientes características:
A llamar a la firma es el nombre de un tipo de valor devuelto seguido de una lista separada por comas entre paréntesis de cero o más tipos de argumento.
A llamar al contenedor es un objeto de un tipo de contenedor de llamada.
A tipo de contenedor de llamada es un tipo que contiene un objeto que se puede llamar y admite una operación de llamada que reenvía a ese objeto.
A objeto que se puede llamar es un objeto de un tipo que se puede llamar.
A tipo que se puede llamar es un puntero a función, un puntero a función miembro, un puntero a miembro de datos o un tipo de clase cuyos objetos pueden aparecer inmediatamente a la izquierda de un operador de llamada de función.
A objeto de destino es el objeto que se puede llamar mantenido por un objeto de contenedor de llamada.
El pseudo-function INVOKE(f, t1, t2, ..., tN) debido a una de las siguientes acciones:
(t1.*f)(t2, ..., tN)Cuando f es un puntero a función miembro de la clase T y t1 es un objeto de tipo T o una referencia a un objeto de tipo T o una referencia a un objeto de un tipo derivado de T.
((*t1).*f)(t2, ..., tN)Cuando f es un puntero a función miembro de la clase T y t1 no es uno de los tipos descritos en el elemento anterior.
t1.*fCuando f es un puntero a datos de miembros de clase T y t1 es un objeto de tipo T o una referencia a un objeto de tipo T o una referencia a un objeto de un tipo derivado de T.
(*t1).*fCuando f es un puntero a datos de miembros de clase de la clase T y t1 no es uno de los tipos descritos en el elemento anterior.
f(t1, t2, ..., tN)en todos los demás casos.
El pseudo-function INVOKE(f, t1, t2, ..., tN, R) significa INVOKE(f, t1, t2, ..., tN) se puede convertir implícitamente a R.
Si tiene un contenedor de la llamada a un tipo de resultado débil, el tipo de su tipo de miembro result_type se basa en el tipo de T del objeto de destino del contenedor, como sigue:
Si T es un puntero a función, result_type es un sinónimo para el tipo de valor devuelto de T.
Si T es un puntero a función miembro, result_type es un sinónimo para el tipo de valor devuelto de T.
Si T es un puntero a miembro de datos, result_type es un sinónimo para el tipo declarado del miembro de datos.
Si T es un tipo de clase que tiene un tipo de miembro result_type, a continuación, result_type es un sinónimo de T::result_type.
De lo contrario, no hay ningún miembro result_type.
Cada contenedor de la llamada tiene un constructor de copias.A contenedor simple llamada es un contenedor de llamada que tiene una asignación de operador y cuyo constructor de copias y el operador de asignación no inicie excepciones.A reenvío de llamada contenedor es un contenedor de llamada que se puede llamar mediante el uso de una lista de argumentos t1, t2, ..., tN, donde cada ti es un valor l.
Los contenedores de llamada definidos en este encabezado función llamada operadores que tienen argumentos de tipos de T1, T2, ..., TN, donde 0 <= N <= NMAX.En esta implementación, el valor de NMAX es de 10.
Clases
Una clase que describe una excepción para indicar que una llamada a operator() en un función error del objeto porque el objeto estaba vacío. |
|
Una clase de plantilla que proporciona una función miembro que niega el valor devuelto de una función binario especificado. |
|
Una clase de plantilla que proporciona un constructor que convierte un objeto binario de función en un objeto de función unario enlazando el primer argumento de la función de binario a un valor especificado. |
|
Una clase de plantilla que proporciona un constructor que convierte un objeto binario de función en un objeto de función unario enlazando el segundo argumento de la función de binario a un valor especificado. |
|
Una clase de adaptador que permite una función miembro const que no toma argumentos que se llamará como un objeto de función unario cuando se inicializa con un argumento de referencia. |
|
Una clase de adaptador que permite una función miembro const que no toma argumentos que se llamará como un objeto de función unario cuando se inicializa con un argumento de puntero. |
|
Una clase de adaptador que permite una función miembro const que toma un solo argumento que se llamará como un objeto de función binario cuando se inicializa con un argumento de referencia. |
|
Una clase de adaptador que permite una función miembro const que toma un solo argumento que se llamará como un objeto de función binario cuando se inicializa con un argumento de puntero. |
|
Una clase que contenga un objeto que se puede llamar. |
|
Una clase que calcula un código hash para un valor. |
|
Una clase que comprueba si se genera un tipo determinado mediante una llamada a bind. |
|
Una clase que comprueba si un tipo determinado es un marcador de posición. |
|
Una clase de adaptador que permite un non_const función de miembro que no toma argumentos que se llamará como un objeto de función unario cuando se inicializa con un argumento de referencia. |
|
Una clase de adaptador que permite un non_const función de miembro que no toma argumentos que se llamará como un objeto de función unario cuando se inicializa con un argumento de puntero. |
|
Una clase de adaptador que permite un non_const función de miembro que toma un solo argumento que se llamará como un objeto de función binario cuando se inicializa con un argumento de referencia. |
|
Una clase de adaptador que permite un non_const función de miembro que toma un solo argumento que se llamará como un objeto de función binario cuando se inicializa con un argumento de puntero. |
|
Convierte un puntero a función binaria en una función binaria adaptable. |
|
Convierte un puntero a función unario en una función unario adaptable. |
|
Una clase que contenga una referencia. |
|
Una estructura que contiene el tipo de valor devuelto de un objeto que se puede llamar ajustado. |
|
Una clase de plantilla que proporciona una función miembro que niega el valor devuelto de una función unario especificado. |
Funciones
Argumentos se enlaza a un objeto que se puede llamar. |
|
Función de la plantilla de aplicación auxiliar que crea un adaptador para convertir un objeto binario de función en un objeto de función unario enlazando el primer argumento de la función de binario a un valor especificado. |
|
Función de la plantilla de aplicación auxiliar que crea un adaptador para convertir un objeto binario de función en un objeto de función unario enlazando el segundo argumento de la función de binario a un valor especificado. |
|
Devuelve el operador AND binario de los dos parámetros. |
|
Devuelve la operación OR binaria de los dos parámetros. |
|
Devuelve la operación XOR binaria de los dos parámetros. |
|
Construye un const reference_wrapper desde un argumento. |
|
Genera un contenedor simple llamada. |
|
Funciones de plantilla de aplicación auxiliar utilizadas para crear adaptadores de objeto de función para las funciones de miembro cuando se inicializaron con argumentos de puntero. |
|
Una función de plantilla auxiliar que se utiliza para construir los adaptadores de objeto de función para las funciones de miembro cuando se inicializaron con argumentos de referencia. |
|
Devuelve el complemento de un predicado unario. |
|
Devuelve el complemento de un predicado binario. |
|
Auxiliar plantilla utiliza una función para convertir unario y binario función punteros, respectivamente, en las funciones de adaptables unario y binario. |
|
Construye un reference_wrapper desde un argumento. |
|
Intercambia dos function objetos. |
Structs
Una clase base vacía que define los tipos que se pueden heredar la clase derivada que proporciona un objeto binario de función. |
|
La clase proporciona un objeto de función predefinida que realiza la operación aritmética de división en los elementos de un tipo de valor especificado. |
|
Un predicado binario que comprueba si un valor de un tipo especificado es igual a otro valor de ese tipo. |
|
Un predicado binario que comprueba si un valor de un tipo especificado es mayor que otro valor de ese tipo. |
|
Un predicado binario que comprueba si un valor de un tipo especificado es mayor o igual a otro valor de ese tipo. |
|
Un predicado binario que comprueba si un valor de un tipo especificado es menor que otro valor de ese tipo. |
|
Un predicado binario que comprueba si un valor de un tipo especificado es menor o igual a otro valor de ese tipo. |
|
La clase proporciona un objeto de función predefinida que realiza la operación lógica de combinación en elementos de un tipo de valor especificado y las pruebas de la verdad o falsedad del resultado. |
|
La clase proporciona un objeto de función predefinida que realiza la operación de negación lógica en elementos de un tipo de valor especificado y las pruebas de la verdad o falsedad del resultado. |
|
La clase proporciona un objeto de función predefinida que realiza la operación de disyunción lógica en elementos de un tipo de valor especificado y las pruebas de la verdad o falsedad del resultado. |
|
La clase proporciona un objeto de función predefinida que realiza la operación de resta aritmética de los elementos de un tipo de valor especificado. |
|
La clase proporciona un objeto de función predefinida que realiza la operación aritmética de módulo en los elementos de un tipo de valor especificado. |
|
La clase proporciona un objeto de función predefinida que realiza la operación de multiplicación aritmética de los elementos de un tipo de valor especificado. |
|
La clase proporciona un objeto de función predefinida que devuelve el valor negativo de un valor de elemento. |
|
Un predicado binario que comprueba si un valor de un tipo especificado no es igual a otro valor de ese tipo. |
|
La clase proporciona un objeto de función predefinida que realiza la operación aritmética de la adición de elementos de un tipo de valor especificado. |
|
Una clase base vacía que define los tipos que se pueden heredar la clase derivada que proporciona un objeto de función unario. |
Objetos
Marcadores de posición para los argumentos que puede reemplazables. |
Operadores
No permite la comparación de igualdad de objetos que se puede llamar. |
|
Impide la ejecución de comparación de desigualdad de los objetos que se puede llamar. |
Vea también
Referencia
Seguridad para subprocesos de la biblioteca estándar de C++
Biblioteca de plantillas estándar