Namespaces
Variants

std:: unary_function

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
unary_function
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Défini dans l'en-tête <functional>
template < typename ArgumentType, typename ResultType >
struct unary_function ;
(obsolète en C++11)
(supprimé en C++17)

std::unary_function est une classe de base pour créer des objets fonction avec un argument.

std::unary_function ne définit pas operator ( ) ; il est attendu que les classes dérivées définissent celui-ci. std::unary_function fournit seulement deux types - argument_type et result_type - définis par les paramètres du template.

Certains adaptateurs d'objets fonction de la bibliothèque standard, tels que std::not1 , exigent que les objets fonction qu'ils adaptent possèdent certains types définis ; std::not1 requiert que l'objet fonction adapté ait un type nommé argument_type . Dériver les objets fonction qui prennent un argument de std::unary_function est un moyen simple de les rendre compatibles avec ces adaptateurs.

std::unary_function est déprécié en C++11.

Types membres

Type Définition
argument_type ArgumentType
result_type ResultType

Exemple

#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct less_than_7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};
int main()
{
    std::vector<int> v(10, 7);
    v[0] = v[1] = v[2] = 6;
    std::cout << std::count_if(v.begin(), v.end(), std::not1(less_than_7()));
    // Solution C++11 :
    // Conversion en std::function<bool (int)> d'une manière ou d'une autre - même avec un lambda
    // std::cout << std::count_if(v.begin(), v.end(),
    //     std::not1(std::function<bool (int)>([](int i) { return i < 7; })));
}

Sortie :

7

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 unaire
(modèle de classe)
(obsolète en C++11) (supprimé en C++17)
classe de base de fonction binaire compatible avec les adaptateurs
(modèle de classe)