Namespaces
Variants

std::binary_function

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
Objets fonctions
Invocation de fonctions
(C++17)(C++23)
Objet fonction identité
(C++20)
Wrapper d'opérateurs transparents
(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)

Anciens binders et adaptateurs
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)  
(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)

(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
 
Défini dans l'en-tête <functional>
template<
    class Arg1,
    class Arg2, 
    class Result
> struct binary_function;
(déprécié en C++11)
(supprimé en C++17)

std::binary_function est une classe de base pour créer des objets fonctions avec deux arguments.

std::binary_function ne définit pas operator() ; il est attendu que les classes dérivées le définissent. std::binary_function fournit seulement trois types - first_argument_type, second_argument_type et result_type - définis par les paramètres du modèle.

Certains adaptateurs d'objets fonctions de la bibliothèque standard, tels que std::not2, exigent que les objets fonctions qu'ils adaptent aient certains types définis ; std::not2 exige que l'objet fonction adapté ait deux types nommés first_argument_type et second_argument_type. Dériver des objets fonctions qui prennent deux arguments de std::binary_function est un moyen simple de les rendre compatibles avec ces adaptateurs.

std::binary_function est déprécié en C++11 et supprimé en C++17.

Types membres

Type Définition
first_argument_type Arg1
second_argument_type Arg2
result_type Result

Exemple

#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct same : std::binary_function<int, int, bool>
{
    bool operator()(int a, int b) const { return a == b; }
};
int main()
{
    std::vector<char> v1{'A', 'B', 'C', 'D', 'E'};
    std::vector<char> v2{'E', 'D', 'C', 'B', 'A'};
    std::vector<bool> v3(v1.size());
    std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), std::not2(same()));
    std::cout << std::boolalpha;
    for (std::size_t i = 0; i < v1.size(); ++i)
        std::cout << v1[i] << " != " << v2[i] << " : " << v3[i] << '\n';
}

Sortie :

A != E : true
B != D : true
C != C : false
D != B : true
E != A : true

Voir aussi

(C++11)
enveloppe copiable de tout objet appelable copiable
(modèle de classe)
enveloppe non copiable de tout objet appelable prenant en charge les qualificateurs dans une signature d'appel donnée
(modèle de classe)
(obsolète en C++11) (supprimé en C++17)
crée un wrapper d'objet fonction compatible avec les adaptateurs à partir d'un pointeur de fonction
(modèle de fonction)
(obsolète en C++11) (supprimé en C++17)
wrapper compatible avec les adaptateurs pour un pointeur vers une fonction binaire
(modèle de classe)
(obsolète en C++11) (supprimé en C++17)
classe de base de fonction unaire compatible avec les adaptateurs
(modèle de classe)