# std::chrono::abs(std::chrono::duration)

< cpp‎ | chrono‎ | duration

定义于头文件 `<chrono>` |  |
template <class Rep, class Period> constexpr std::chrono::duration<Rep, Period> abs( std::chrono::duration<Rep, Period> d ); |  | (C++17 起)

返回时期 `d` 的绝对值。具体而言，若 d >= d.zero() ，则返回 d ，否则返回 -d 。

该函数不参与重载决议，除非 std::numeric_limits<Rep>::is_signed 为 true 。

### 参数

d | - | 时期

### 返回值

`d` 的绝对值

### 可能的实现

    template <class Rep, class Period, class = std::enable_if_t<
       std::chrono::duration<Rep, Period>::min() < std::chrono::duration<Rep, Period>::zero()>>
    constexpr std::chrono::duration<Rep, Period> abs(std::chrono::duration<Rep, Period> d)
    {
        return d >= d.zero() ? d : -d;
    }

### 示例

    #include <iostream>
    #include <chrono>

    int main()
    {
        using namespace std::chrono;

        static_assert(abs(-42s) == std::chrono::abs(42s));

        std::cout << "abs(+3min) = " << abs(3min).count() << '\n'
                  << "abs(-3min) = " << abs(-3min).count() << '\n';
    }

输出：

    abs(+3min) = 3
    abs(-3min) = 3

### 参阅

operator+operator- | 实现一元 + 和一元 - (公开成员函数)
abs(int)labs llabs (C++11) | 计算整数值的绝对值（ \(\small{|x|}\)|x| ） (函数)