std::logical_not(3)

NAME
std::logical_not - std::logical_not

Synopsis
   Defined in header <functional>
   template< class T > (until C++14)
   struct logical_not;
   template< class T = void > (since C++14)
   struct logical_not;
   Function object for performing logical NOT (logical negation). Effectively calls
   operator! for type T.

Specializations
   The standard library provides a specialization of std::logical_not
   when T is not specified, which leaves the parameter types and return
   type to be deduced.
                        (since C++14)
   logical_not<void> function object implementing !x deducing parameter
   (C++14) and return types
                     (class template specialization)

Member types
   Type Definition
   result_type (deprecated in C++17)(removed in C++20) bool
   argument_type (deprecated in C++17)(removed in C++20) T
   These member types are obtained via publicly inheriting (until C++11)
   std::unary_function<T, bool>.

Member functions
   operator() returns the logical NOT of the argument
              (public member function) std::logical_not::operator()
   bool operator()( const T& arg ) const; (until C++14)
   constexpr bool operator()( const T& arg ) const; (since C++14)
   Returns the logical NOT of arg.

Parameters
   arg - value to compute logical NOT of

Return value
   The result of !arg.

Exceptions
   May throw implementation-defined exceptions.

Possible implementation
   constexpr // since C++14
   bool operator()(const T& arg) const
   {
       return !arg;
   }