Objetos función
Un objeto función es cualquier objeto para el que el operador llamada a función está definido. C++ proporciona varios objetos función integrados así como apoyo para la creación y manipulación de nuevos objetos función.
Contenido |
[editar] Envoltorios de funciones
std::function proporciona apoyo para almacenar objetos función arbitrarios.
| (C++11) |
Envuelve un objeto que puede ser llamado a cualquier tipo con la signatura de llamada a función especificada. (plantilla de clase) |
| (C++23) |
Envuelve un objeto invocable de cualquier tipo con la signatura de llamada a función especificada. (plantilla de clase) |
| (C++11) |
La excepción que se lanza cuando se invoca un objeto std::function vacío. (clase) |
| (C++11) |
Crea un objeto función de un puntero a un miembro. (plantilla de función) |
[editar] Invocación de funciones
std::invoke puede invocar cualquier objeto Callable (invocable) con los argumentos dados.
| (C++17) |
Invoca cualquier objeto Callable con los argumentos dados. (plantilla de función) |
[editar] Identidad
std::identity es el objeto función identidad: devuelve su argumento sin cambiarlo.
| (C++20) |
Objeto función que devuelve su argumento sin cambiarlo. (clase) |
[editar] Aplicación parcial de funciones
std::bind_front y std::bind proporcionan apoyo para la aplicación parcial de funciones, es decir, la vinculación de argumentos a funciones para producir nuevas funciones.
| (C++20) |
Vincula un número variable de argumentos, en orden, a un objeto función. (plantilla de función) |
| (C++11) |
Vincula uno o más argumentos a un objeto función. (plantilla de función) |
| (C++11) |
Indica que un objeto es una expresión std::bind o puede usarse como tal. (plantilla de clase) |
| (C++11) |
Indica que un objeto es un marcador de posición estándar o puede usarse como tal. (plantilla de clase) |
| Definido en el espacio de nombres
std::placeholders | |
| (C++11) |
Marcadores de posición para los argumentos no vinculados en una expresión std::bind. (constante) |
[editar] Negadores
std::not_fn crea un objeto función que niega el resultado del objeto invocable que se la pasó.
| (C++17) |
Crea un objeto función que devuelve el complemento del resultado del objeto función que mantiene. (plantilla de función) |
[editar] Buscadores
Se proporcionan buscadores que implementan varios algoritmos de búsqueda de cadenas y que se pueden usar o bien directamente o con std::search.
| (C++17) |
Implementación del algoritmo de búsqueda de la biblioteca estándar de C++. (plantilla de clase) |
| (C++17) |
Implementación del algoritmo de búsqueda Boyer-Moore. (plantilla de clase) |
| Implementación del algoritmo de búsqueda Boyer-Moore-Horspool. (plantilla de clase) |
[editar] Envoltorios de referencias
Los envoltorios de referencias admiten que los argumentos de referencia se almacenen en objetos función copiables:
| (C++11) |
Envoltorio de referencia CopyConstructible y CopyAssignable. (plantilla de clase) |
| (C++11)(C++11) |
Crea un envoltorio de referencia (std::reference_wrapper) con un tipo deducido de su argumento. (plantilla de función) |
| (C++20)(C++20) |
Obtiene el tipo referencia envuelto en std::reference_wrapper. (plantilla de clase) |
[editar] Objetos función de operador
C++ define varios objetos función que representan operaciones aritméticas y lógicas comunes:
Operaciones aritméticas | |
| Objeto función que implementa x + y (plantilla de clase) | |
| Objeto función que implementa x - y (plantilla de clase) | |
| Objeto función que implementa x * y (plantilla de clase) | |
| Objeto función que implementa x / y. (plantilla de clase) | |
| Objeto función que implementa x % y (plantilla de clase) | |
| Objeto función que implementa -x (plantilla de clase) | |
Comparaciones | |
| Objeto función que implementa x == y. (plantilla de clase) | |
| Objeto función que implementa x != y. (plantilla de clase) | |
| Objeto función que implementa x > y. (plantilla de clase) | |
| Objeto función que implementa x < y. (plantilla de clase) | |
| Objeto función que implementa x >= y. (plantilla de clase) | |
| Objeto función que implementa x <= y (plantilla de clase) | |
Operaciones lógicas | |
| Objeto función que implementa x && y. (plantilla de clase) | |
| Objeto función que implementa x || y. (plantilla de clase) | |
| Objeto función que implementa !x. (plantilla de clase) | |
Operaciones a nivel de bits | |
| Objeto función que implementa x & y. (plantilla de clase) | |
| Objeto función que implementa x | y. (plantilla de clase) | |
| Objeto función que implementa x ^ y. (plantilla de clase) | |
| (C++14) |
Objeto función que implementa ~x. (plantilla de clase) |
[editar] Objetos función de comparación restringido
C++20 define un conjunto de objetos función de comparación restringidos. Los operadores de igualdad (ranges::equal_to y ranges::not_equal_to) requieren que los tipos de los argumentos modelen equality_comparable_with. Los operadores relacionales (ranges::less, ranges::greater, ranges::less_equal, y ranges::greater_equal) requieren que los tipos de los argumentos modelen totally_ordered_with. El operador de comparación de tres vías (compare_three_way) requiere que el tipo modele three_way_comparable_with.
| (C++20) |
Objeto función que implementa x == y. (clase) |
| (C++20) |
Objeto función que implementa x != y. (clase) |
| (C++20) |
Objeto función que implementa x < y. (clase) |
| (C++20) |
Objeto función que implementa x > y. (clase) |
| (C++20) |
Objeto función que implementa x <= y. (clase) |
| (C++20) |
Objeto función que implementa x >= y. (clase) |
| (C++20) |
Objeto función que implementa x <=> y (clase) |
[editar] Vinculadores y adaptadores antiguos
Varias utilerías que proporcionaban apoyo funcional en el pasado están obsoletas en C++11 y se eliminaron en C++17 (los negadores antiguos se hicieron obsoletos en C++17 y se eliminaron en C++20):
Base | |
| (en desuso en C++11)(eliminado en C++17) |
Clase base de función unaria compatible con un adaptador. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Clase base compatible con un adaptador de función binaria. (plantilla de clase) |
Vinculadores | |
| (en desuso en C++11)(eliminado en C++17) |
Objeto función que mantiene una función binaria y uno de sus argumentos. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Vincula un argumento a una función binaria. (plantilla de función) |
Adaptadores de función | |
| (en desuso en C++11)(eliminado en C++17) |
Envoltorio compatible con un adaptador para un puntero a función unaria. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Envoltorio compatible con un adaptador para un puntero a función binaria. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Crea un envoltorio de objeto función compatible con un adaptador de un puntero a función (plantilla de función) |
| (en desuso en C++11)(eliminado en C++17) |
Envoltorio para un puntero a una función nularia o función miembro unaria, que puede ser llamado con un puntero a un objeto. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Crea un envoltorio de un puntero a función miembro, que puede ser llamado con un puntero a un objeto. (plantilla de función) |
| (en desuso en C++11)(eliminado en C++17) |
Envoltorio para un puntero a una función nularia o función miembro unaria, que puede ser llamado con una referencia a un objeto. (plantilla de clase) |
| (en desuso en C++11)(eliminado en C++17) |
Crea un envoltorio de un puntero a función miembro, que puede ser llamado con una referencia a un objeto. (plantilla de función) |
| (en desuso en C++17)(eliminado en C++20) |
Envoltorio de objeto función que devuelve el complemento del predicado unario que mantiene. (plantilla de clase) |
| (en desuso en C++17)(eliminado en C++20) |
Envoltorio de objeto función que devuelve el complemento del predicado binario que mantiene. (plantilla de clase) |
| (en desuso en C++17)(eliminado en C++20) |
Construye un objeto std::unary_negate personalizado. (plantilla de función) |
| (en desuso en C++17)(eliminado en C++20) |
Construye un objeto std::binary_negate personalizado. (plantilla de función) |