diff --git a/zircon/system/ulib/zx/include/lib/zx/time.h b/zircon/system/ulib/zx/include/lib/zx/time.h index 7b7e25cda1f8688633f55c2fb7f60c06353bbb36..fdfcb6f34849a1810e516e287cf1e825edce3e14 100644 --- a/zircon/system/ulib/zx/include/lib/zx/time.h +++ b/zircon/system/ulib/zx/include/lib/zx/time.h @@ -234,6 +234,11 @@ private: zx_time_t value_ = 0; }; +template <zx_clock_t kClockId> +constexpr basic_time<kClockId> operator+(duration delta, basic_time<kClockId> time) { + return time + delta; +} + using time = basic_time<ZX_CLOCK_MONOTONIC>; using time_utc = basic_time<ZX_CLOCK_UTC>; using time_thread = basic_time<ZX_CLOCK_THREAD>; diff --git a/zircon/system/utest/libzx/zx-test.cpp b/zircon/system/utest/libzx/zx-test.cpp index 54678575748f87a8efd9d4005d417ff97e217ff9..11cf79415aeff22f61b4b91a5856ff788d1ae6f4 100644 --- a/zircon/system/utest/libzx/zx-test.cpp +++ b/zircon/system/utest/libzx/zx-test.cpp @@ -285,6 +285,7 @@ static bool time_test() { ASSERT_EQ(zx::hour(10).to_hours(), 10); ASSERT_EQ((zx::time() + zx::usec(19)).get(), ZX_USEC(19)); + ASSERT_EQ((zx::usec(19) + zx::time()).get(), ZX_USEC(19)); ASSERT_EQ((zx::time::infinite() - zx::time()).get(), ZX_TIME_INFINITE); ASSERT_EQ((zx::time::infinite() - zx::time::infinite()).get(), 0); ASSERT_EQ((zx::time() + zx::duration::infinite()).get(), ZX_TIME_INFINITE);