# std::negate

< cpp‎ | utility‎ | functional

定义于头文件 `<functional>` |  |
template< class T > struct negate; |  | (C++14 前)
template< class T = void > struct negate; |  | (C++14 起)

进行取负的函数对象。等效地在 `T` 类型实例上调用 operator- 。

### 特化

标准库提供 `std::negate` 在不指定 `T` 时的特化，使参数类型和返回类型留待推导。
negate<void> (C++14) | 实现 -x 并推导参数和返回类型的函数对象 (类模板特化)
| (C++14 起)

### 成员类型

类型 | 定义
`result_type` (C++17 中弃用)(C++20 中移除) | `T`
`argument_type` (C++17 中弃用)(C++20 中移除) | `T`

这些成员类型由公开继承 std::unary_function<T, T> 获得。 | (C++11 前)

### 成员函数

operator() | 返回参数的相反数 (公开成员函数)

## std::negate::operator()

T operator()( const T& arg ) const; |  | (C++14 前)
constexpr T operator()( const T& arg ) const; |  | (C++14 起)

返回 `arg` 的相反数。

### 参数

arg | - | 要计算相反数的值

### 返回值

-arg 的结果。

### 异常

可能抛出实现定义的异常。

### 可能的实现

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