<functional>
Définit les fonctions de bibliothèque STL (Standard Template Library) qui permettent de construire des objets function, également connu comme functors et leurs classeurs.Un objet de fonction est un objet d'un type qui définit operator().Un objet de fonction peut être un pointeur fonction, mais plus généralement, l'objet est utilisé pour stocker des informations supplémentaires sont accessibles pendant un appel de fonction.
#include <functional>
Notes
Les algorithmes nécessitent deux types d'objets de fonction : unaire et binaire.Les objets de fonction unaire nécessitent un argument, et objets function binaire nécessitent deux arguments.Un objet de fonction et les pointeurs fonction peuvent être passés en tant que prédicat à un algorithme, mais les objets function sont également adaptables et augmentent la portée, flexibilité et l'efficacité de la STL.Si, par exemple, une valeur devait être lié à une fonction avant d'être transmis à un algorithme, un pointeur fonction ne pourrait pas être utilisé.Adaptateurs de la fonction convertissent des pointeurs fonction en objets fonction adaptable qui peuvent être liés à une valeur.L'en-tête de <functional> contient également des cartes de fonction membre qui permettent des fonctions membres pour être appelée en tant qu'objets function adaptable.Les fonctions sont adaptables si elles ont des déclarations de type imbriqué spécifiant leur argument et types de retour.La norme C++ requiert que cette capacité d'adaptation est implémentée en ayant toutes les classes d'objet standard hériter des classes de base unary_function ou binary_function.Objets de fonction et leurs adaptateurs permettent la STL mettre à niveau les applications existantes et aider à intégrer la STL dans l'environnement de programmation C++.
Extensions TR1
Les fonctionnalités suivantes sont ajoutées dans l'implémentation de Visual C++ de TR1 :
A appeler signature est le nom d'un type de retour suivi d'une liste séparée par des virgules entre parenthèses de zéro ou plusieurs types d'arguments.
A appeler le wrapper est un objet d'un type de wrapper d'appel.
A type de wrapper d'appel est un type qui conserve un objet appelable et prend en charge une opération d'appel qui transmet à cet objet.
A objet appelable est un objet d'un type pouvant être appelé.
A type WRC est un pointeur fonction, un pointeur vers une fonction membre, un pointeur vers les données du membre ou un type de classe dont les objets peuvent apparaître immédiatement à gauche d'un opérateur d'appel de fonction.
A objet cible est l'objet appelable détenue par un objet de wrapper d'appel.
La pseudo-function INVOKE(f, t1, t2, ..., tN) signifie qu'une des opérations suivantes :
(t1.*f)(t2, ..., tN)Lorsque f est un pointeur vers une fonction membre de classe T et t1 est un objet de type T ou une référence à un objet de type T ou une référence à un objet d'un type dérivé T.
((*t1).*f)(t2, ..., tN)Lorsque f est un pointeur vers une fonction membre de classe T et t1 n'est pas un des types décrits dans l'élément précédent.
t1.*fLorsque f est un pointeur vers les données de membre de classe T et t1 est un objet de type T ou une référence à un objet de type T ou une référence à un objet d'un type dérivé T.
(*t1).*fLorsque f est un pointeur vers les données membres de la classe classe T et t1 n'est pas un des types décrits dans l'élément précédent.
f(t1, t2, ..., tN)dans tous les autres cas.
La pseudo-function INVOKE(f, t1, t2, ..., tN, R) signifie INVOKE(f, t1, t2, ..., tN) implicitement converti en R.
Si un wrapper d'appel a un type de résultat faible, le type de son type de membre result_type est basé sur le type de T de l'objet cible du wrapper, comme suit :
Si T est un pointeur vers une fonction, result_type est un synonyme du type de retour de T.
Si T est un pointeur vers une fonction membre, result_type est un synonyme du type de retour de T.
Si T est un pointeur vers un membre de données, result_type est un synonyme pour le type déclaré de la donnée membre.
Si T est un type de classe possédant un type de membre result_type, puis result_type est un synonyme de T::result_type.
Sinon, il n'existe aucun membre result_type.
Chaque wrapper d'appel a un constructeur de copie.A wrapper simple appel est un wrapper d'appel qui a une affectation, opérateur et dont le constructeur de copie et l'opérateur d'assignation ne levez pas d'exceptions.A transfert d'appel wrapper est un wrapper d'appel qui peut être appelé à l'aide d'une liste d'arguments t1, t2, ..., tN, où chaque ti est une lvalue.
Les wrappers d'appel définis dans cette en-tête fonction appel opérateurs de support qui possèdent des arguments de types de T1, T2, ..., TN, où 0 <= N <= NMAX.Dans cette implémentation, la valeur de NMAX est de 10.
Classes
Une classe qui décrit une exception levée pour indiquer qu'un appel à operator() sur un fonction objet a échoué car l'objet était vide. |
|
Une classe de modèle fournit une fonction membre qui nie la valeur de retour d'une fonction binaire spécifiée. |
|
Une classe de modèle fournissant un constructeur qui convertit un objet de fonction binaire en un objet de fonction unaire en liant le premier argument de la fonction binaire à une valeur spécifiée. |
|
Une classe de modèle fournissant un constructeur qui convertit un objet de fonction binaire en un objet de fonction unaire en liant le deuxième argument de la fonction binaire à une valeur spécifiée. |
|
Une classe d'adaptateur qui permet à une fonction membre const sans argument pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de référence. |
|
Une classe d'adaptateur qui permet à une fonction membre const sans argument pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de pointeur. |
|
Une classe d'adaptateur qui permet à une fonction membre const qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de référence. |
|
Une classe d'adaptateur qui permet à une fonction membre const qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de pointeur. |
|
Une classe qui encapsule un objet appelable. |
|
Une classe qui calcule un code de hachage pour une valeur. |
|
Une classe qui teste si un type particulier est généré par l'appel de bind. |
|
Une classe qui teste si un type particulier est un espace réservé. |
|
Une classe d'adaptateur qui permet à un non_const fonction membre qui prend pas d'arguments pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de référence. |
|
Une classe d'adaptateur qui permet à un non_const fonction membre qui prend pas d'arguments pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de pointeur. |
|
Une classe d'adaptateur qui permet à un non_const fonction membre qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de référence. |
|
Une classe d'adaptateur qui permet à un non_const fonction membre qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de pointeur. |
|
Convertit un pointeur fonction binaire en une fonction binaire adaptable. |
|
Convertit un pointeur de fonction unaire dans une fonction unaire adaptable. |
|
Une classe qui encapsule une référence. |
|
Un struct qui contient le type de retour d'un objet encapsulé appelable. |
|
Une classe de modèle fournit une fonction membre qui nie la valeur de retour d'une fonction unaire spécifié. |
Fonctions
Lie les arguments à un objet appelable. |
|
Un modèle de fonction d'assistance qui crée un adaptateur pour convertir un objet de fonction binaire en un objet de fonction unaire en liant le premier argument de la fonction binaire à une valeur spécifiée. |
|
Un modèle de fonction d'assistance qui crée un adaptateur pour convertir un objet de fonction binaire en un objet de fonction unaire en liant le deuxième argument de la fonction binaire à une valeur spécifiée. |
|
Renvoie l'opérateur binaire AND des deux paramètres. |
|
Renvoie l'opérateur OR des deux paramètres. |
|
Renvoie le binaire XOR des deux paramètres. |
|
Construit une variable const reference_wrapper à partir d'un argument. |
|
Génère un wrapper simple appel. |
|
Fonctions du modèle d'assistance utilisées pour construire des adaptateurs pour objet des fonctions membres lors de l'initialisation avec les arguments de pointeur de fonction. |
|
Une fonction de modèle d'assistance utilisée pour construire des cartes d'objet de fonction pour les fonctions de membre lors de l'initialisation avec les arguments de référence. |
|
Retourne le complément d'un prédicat unaire. |
|
Retourne le complément d'un prédicat binaire. |
|
Un modèle de fonction d'assistance utilisée pour convertir unaires et binaire fonction pointeurs, respectivement, dans des fonctions adaptables unaires et binaires. |
|
Construit un reference_wrapper à partir d'un argument. |
|
Permute les deux function objets. |
Structures
Classe de base vide qui définit les types qui peuvent être hérités par la classe dérivée qui fournit un objet de fonction binaire. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération arithmétique de division sur les éléments d'un type valeur spécifié. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié est égale à une autre valeur de ce type. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié est supérieur à une autre valeur de ce type. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié est supérieur ou égal à une autre valeur de ce type. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié est inférieur à une autre valeur de ce type. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié est inférieur ou égal à une autre valeur de ce type. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de conjonction logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de négation logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de disjonction logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de soustraction arithmétique sur les éléments d'un type valeur spécifié. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de modulo arithmétique sur des éléments d'un type valeur spécifié. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération de multiplication arithmétique sur les éléments d'un type valeur spécifié. |
|
La classe fournit un objet de fonction prédéfinie qui renvoie la valeur négative d'une valeur d'élément. |
|
Un prédicat binaire qui teste si une valeur d'un type spécifié n'est pas égal à une autre valeur de ce type. |
|
La classe fournit un objet de fonction prédéfinie qui effectue l'opération d'addition arithmétique sur les éléments d'un type valeur spécifié. |
|
Classe de base vide qui définit les types qui peuvent être hérités par la classe dérivée qui fournit un objet de fonction unaire. |
Objets
Espaces réservés pour les arguments remplaçables. |
Opérateurs
N'autorise pas la comparaison d'égalité d'objets pouvant être appelés. |
|
N'autorise pas d'objets pouvant être appelé par comparaison d'inégalité. |
Voir aussi
Référence
Sécurité des threads dans la bibliothèque C++ standard