std::negate<void> - cppreference.com

From cppreference.com

template<> class negate<void>;

(since C++14)

std::negate<> is a specialization of std::negate with parameter and return type deduced.

Member types

Member functions

returns its negated argument
(public member function)

std::negate<void>::operator()

template< class T > constexpr auto operator()( T&& arg ) const -> decltype(-std::forward<T>(arg));

Returns the result of negating arg.

Parameters

Return value

-std::forward<T>(arg).

Example

#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: