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

From cppreference.com
< cpp‎ | chrono‎ | duration

Defined in header `<chrono>` |  |
template <class Rep, class Period> constexpr std::chrono::duration<Rep, Period> abs( std::chrono::duration<Rep, Period> d ); |  | (since C++17)

Returns the absolute value of the duration `d`. Specifically, if d >= d.zero(), return d, otherwise return -d.

The function does not participate in the overload resolution unless std::numeric_limits<Rep>::is_signed is true.

### Parameters

d | - | duration

### Return value

Absolute value of `d`

### Possible implementation

    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;
    }

### Example

Run this code

    #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';
    }

Output:

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

### See also

operator+operator- | implements unary + and unary - (public member function)
abs(int)labs llabs (C++11) | computes absolute value of an integral value (\(\small{|x|}\)|x|) (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/chrono/duration/abs&oldid=133173"