From: Marshall Clow Date: Fri, 26 Jul 2019 15:10:46 +0000 (+0000) Subject: Fix a bug in std::chrono::abs where it would fail when the duration's period had... X-Git-Tag: llvmorg-11-init~13475 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=736e8aa8ed48fd8c29a909bf616965d0f8677bca;p=platform%2Fupstream%2Fllvm.git Fix a bug in std::chrono::abs where it would fail when the duration's period had not been reduced.s llvm-svn: 367120 --- diff --git a/libcxx/include/chrono b/libcxx/include/chrono index 06fa658..51722ad 100644 --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -1428,7 +1428,7 @@ typename enable_if >::type abs(duration<_Rep, _Period> __d) { - return __d >= __d.zero() ? __d : -__d; + return __d >= __d.zero() ? +__d : -__d; } #endif diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.alg/abs.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.alg/abs.pass.cpp index 605e27c..8f5544f 100644 --- a/libcxx/test/std/utilities/time/time.duration/time.duration.alg/abs.pass.cpp +++ b/libcxx/test/std/utilities/time/time.duration/time.duration.alg/abs.pass.cpp @@ -49,5 +49,11 @@ int main(int, char**) static_assert(h2.count() == 3, ""); } + { +// Make sure it works for durations that are not LCD'ed - example from LWG3091 + constexpr auto d = std::chrono::abs(std::chrono::duration>{2}); + static_assert(d.count() == 2, ""); + } + return 0; }