std::negate<void>
From cppreference.com
                    
                                        
                    < cpp | utility | functional
                    
                                                            
                    |   Defined in header  <functional>
  | 
||
|   template<> class negate<void>;  | 
(since C++14) | |
std::negate<> is a specialization of std::negate with parameter and return type deduced.
Member types
| Type | Definition | 
 is_transparent
 | 
unspecified | 
Member functions
|     operator()  | 
  returns its negated argument  (public member function)  | 
std::negate<void>::operator()
|   template< class T > constexpr auto operator()( T&& arg ) const  | 
||
Returns the result of negating arg.
Parameters
| arg | - | value to negate | 
Return value
-std::forward<T>(arg).
Example
Run this code
#include <complex> #include <functional> #include <iostream> int main() { auto complex_negate = std::negate<void>{}; // “void” can be omitted constexpr std::complex z(4, 2); std::cout << z << '\n'; std::cout << -z << '\n'; std::cout << complex_negate(z) << '\n'; }
Output:
(4,2) (-4,-2) (-4,-2)