Partager via


logical_not, struct

Un objet de fonction prédéfinie qui exécute l'opération logique non (operator!) à son argument.

template<class Type = void>
   struct logical_not : public unary_function<Type, bool> 
   {
      bool operator()(
         const Type& Left
      ) const;
   };

// specialized transparent functor for operator!
template<>
   struct logical_not<void>
   {
      template<class Type>
      auto operator()(Type&& Left) const
         -> decltype(!std::forward<Type>(Left));
   };

Paramètres

  • Type
    Tout type qui prend en charge operator! qui prend un opérande de type spécifié ou déduit.

  • Left
    L'opérande de l'opérateur NOT logique. Le modèle non spécialisé prend un argument de référence lvalue de type Type. Le modèle spécialisé perfectionne le transfert des arguments de référence lvalue et rvalue de type déduit Type.

Valeur de retour

Le résultat de ! * Left + . Le modèle spécialisé effectue de façon parfaite le transfert du résultat, qui a le type retourné par operator!.

Exemple

// functional_logical_not.cpp
// compile with: /EHsc
#include <deque>
#include <algorithm>
#include <functional>
#include <iostream>

int main( )
{
   using namespace std;
   deque<bool> d1, d2 ( 7 );
   deque<bool>::iterator iter1, iter2;

   int i;
   for ( i = 0 ; i < 7 ; i++ )
   {
      d1.push_back((bool)((i % 2) != 0));
   }

   cout << boolalpha;    // boolalpha I/O flag on

   cout << "Original deque:\n d1 = ( " ;
   for ( iter1 = d1.begin( ) ; iter1 != d1.end( ) ; iter1++ )
      cout << *iter1 << " ";
   cout << ")" << endl;

   // To flip all the truth values of the elements,
   // use the logical_not function object
   transform( d1.begin( ), d1.end( ), d2.begin( ),logical_not<bool>( ) );
   cout << "The deque with its values negated is:\n d2 = ( " ;
   for ( iter2 = d2.begin( ) ; iter2 != d2.end( ) ; iter2++ )
      cout << *iter2 << " ";
   cout << ")" << endl;
}
  

Configuration requise

En-tête : <functional>

Espace de noms : std

Voir aussi

Référence

Sécurité des threads dans la bibliothèque standard C++

Bibliothèque STL (Standard Template Library)