std::negate(3)

NAME
std::negate - std::negate

Synopsis
   Defined in header <functional>
   template< class T > (until C++14)
   struct negate;
   template< class T = void > (since C++14)
   struct negate;
   Function object for performing negation. Effectively calls operator- on an instance
   of type T.

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

Member types
   Type Definition
   result_type (deprecated in C++17)(removed in C++20) T
   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, T>.

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

Parameters
   arg - value to compute negation of

Return value
   The result of -arg.

Exceptions
   May throw implementation-defined exceptions.

Possible implementation
   constexpr T operator()(const T& arg) const
   {
       return -arg;
   }