Espaces de noms
Variantes
Affichages
Actions

Objets-fonctions

De cppreference.com
< cpp‎ | utility


 
 
 
Objets Function
Emballages de fonction
Original:
Function wrappers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
function (C++11)
mem_fn (C++11)
bad_function_call (C++11)
Lier
Original:
Bind
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
bind (C++11)
is_bind_expression (C++11)
is_placeholder (C++11)
_1, _2, _3, ... (C++11)
Emballages de référence
Original:
Reference wrappers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
reference_wrapper (C++11)
ref
cref
(C++11)
(C++11)
Emballages opérateur
Original:
Operator wrappers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Négateurs
Original:
Negators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Obsolète liants et des adaptateurs
Original:
Deprecated binders and adaptors
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unary_function (obsolète)
binary_function (obsolète)
ptr_fun (obsolète)
pointer_to_unary_function (obsolète)
pointer_to_binary_function (obsolète)
mem_fun (obsolète)
mem_fun_t
mem_fun1_t
const_mem_fun_t
const_mem_fun1_t
(obsolète)
(obsolète)
(obsolète)
(obsolète)
mem_fun_ref (obsolète)
mem_fun_ref_t
mem_fun1_ref_t
const_mem_fun_ref_t
const_mem_fun1_ref_t
(obsolète)
(obsolète)
(obsolète)
(obsolète)
binder1st
binder2nd
(obsolète)
(obsolète)
bind1st
bind2nd
(obsolète)
(obsolète)
 

Un objet-fonction ou foncteur est un objet pour lequel l'opérateur d'appel de fonction (operator()) est défini. Les foncteurs apportent des fonctionnalités issues de la programmation fonctionnelle. Ils sont utiles pour manipuler des fonctions de la même façon que des objets classiques et sont utilisés dans la bibliothèque d'algorithmes. Le C++ fournit des foncteurs prédéfinis ainsi que des mécanismes pour créer et manipuler de nouveaux foncteurs.

Remarque : on appelle foncteur toute cible appelable, par exemple une lambda (fonction anonyme) ou un bind (application partielle de fonction), mais plus rigoureusement, en POO, un foncteur est une instance d'une classe définissant operator(), d'où le terme objet-fonction.

Sommaire

[modifier] Création de foncteurs

La STL fournit plusieurs templates pour créer des foncteurs. De par leur généricité, ces templates permettent de gérer n'importe quelle signature de fonction.

(C++11)
adaptateur générique de foncteur
(classe générique) [edit]
(C++11)
crée un foncteur permettant d'accéder à un membre de classe donné; le foncteur prend alors en paramètre une instance de la classe
(fonction générique) [edit]
exception levée si operator() est appelé sur un objet qui n'est pas un foncteur
(classe) [edit]

[modifier] Liaison de paramètres et application partielle

std::bind permet de faire de la liaison de paramètres et de l'application partielle de fonction. En d'autres termes, il s'agit de créer un nouveau foncteur à partir d'un foncteur existant, en changeant l'ordre de ses paramètres ou en fixant la valeur d'une partie de ses paramètres.

(C++11)
liaison de paramètres et application partielle d'un foncteur
(fonction générique) [edit]
indique si un objet vient d'un std::bind
(classe générique) [edit]
indique si un objet est un placeholder standard (numéro de paramètre)
(classe générique) [edit]
Defined in namespace std::placeholders
placeholders (numéros de paramètre) pour les std::bind
(constante) [edit]

[modifier] Adaptateurs de références

std::reference_wrapper permet de manipuler une référence comme un objet (que l'on peut copier ou auquel on peut affecter une valeur).

adaptateur de référence respectant CopyConstructible et CopyAssignable
(classe générique) [edit]
(C++11)
(C++11)
crée un std::reference_wrapper dont le type est déduit du paramètre
(fonction générique) [edit]

[modifier] Foncteurs prédéfinis

La STL fournit des foncteurs implémentant quelques opérations arithmétiques ou logiques classiques.

Opérations arithmétiques
objet-fonction implémentant x + y
(classe générique) [edit]
objet-fonction implémentant x - y
(classe générique) [edit]
objet-fonction implémentant x * y
(classe générique) [edit]
objet-fonction implémentant x / y
(classe générique) [edit]
objet-fonction implémentant x % y
(classe générique) [edit]
objet-fonction implémentant -x
(classe générique) [edit]
Comparaisons
objet-fonction implémentant x == y
(classe générique) [edit]
objet-fonction implémentant x != y
(classe générique) [edit]
objet-fonction implémentant x > y
(classe générique) [edit]
objet-fonction implémentant x < y
(classe générique) [edit]
objet-fonction implémentant x >= y
(classe générique) [edit]
objet-fonction implémentant x <= y
(classe générique) [edit]
Opérations logiques
objet-fonction implémentant x && y
(classe générique) [edit]
objet-fonction implémentant x || y
(classe générique) [edit]
objet-fonction implémentant !x
(classe générique) [edit]
Opérations bit-à-bit
objet-fonction implémentant x & y
(classe générique) [edit]
objet-fonction implémentant x | y
(classe générique) [edit]
objet-fonction implémentant x ^ y
(classe générique) [edit]
Négations
foncteur retournant le complémentaire d'un foncteur existant, de type prédicat unaire
(classe générique) [edit]
foncteur retournant le complémentaire d'un foncteur existant, de type prédicat binaire
(classe générique) [edit]
fonction permettant de construire un objet de type std::unary_negate
(fonction générique) [edit]
fonction permettant de construire un objet de type std::binary_negate
(fonction générique) [edit]

[modifier] Obsolète en C++11

L'ancien mécanisme de foncteurs est maintenant obsolète en C++11, notamment:

Classes de base pour créer des foncteurs
(obsolète)
classe de base pour définir des foncteurs à 1 paramètre
(classe générique) [edit]
(obsolète)
classe de base pour définir des foncteurs à 2 paramètres
(classe générique) [edit]
Liaison de paramètres, application partielle
(obsolète)
(obsolète)
foncteur contenant une fonction binaire et un des deux paramètres
(classe générique) [edit]
(obsolète)
(obsolète)
retourne un foncteur unaire résultant de l'application partielle d'un foncteur binaire
(fonction générique) [edit]
Adaptateurs de fonction
permet de créer un foncteur à partir d'une fonction binaire
(classe générique) [edit]
permet de créer un foncteur à partir d'une fonction unaire
(classe générique) [edit]
(obsolète)
crée un foncteur à partir d'une fonction
(fonction générique) [edit]
(obsolète)
(obsolète)
(obsolète)
(obsolète)
permet de créer un foncteur à partir d'une fonction membre
(classe générique) [edit]
(obsolète)
crée un foncteur à partir d'une fonction membre
(fonction générique) [edit]
(obsolète)
(obsolète)
(obsolète)
(obsolète)
permet de créer un foncteur à partir d'une fonction membre
(classe générique) [edit]
(obsolète)
crée un foncteur à partir d'une fonction membre
(fonction générique) [edit]