Proposed resolution:
This wording is relative to N4910.
Modify [time.syn], header <chrono> synopsis, as indicated:
[…]
// [time.duration.alg], specialized algorithms
template<class Rep, class Period>
constexpr common_type_t<duration<Rep, Period>> abs(duration<Rep, Period> d);
[…]
Modify [time.duration.alg] as indicated:
[Drafting note: This will cause abs to reduce the period before returning it, much like the other arithmetic operators.
This is not a breaking change, because code that was using abs with a non-reduced period before did not compile. ]
template<class Rep, class Period> constexpr common_type_t<duration<Rep, Period>> abs(duration<Rep, Period> d);-1- Constraints: numeric_limits<Rep>::is_signed is true.
-2- Returns: If d >= d.zero(), return +d, otherwise return -d.