diff --git a/src/datadog/clock.h b/src/datadog/clock.h index a2758a47..84ef44f2 100644 --- a/src/datadog/clock.h +++ b/src/datadog/clock.h @@ -39,11 +39,15 @@ inline Duration operator-(const TimePoint& after, const TimePoint& before) { } inline TimePoint operator-(const TimePoint& origin, Duration offset) { - return {origin.wall - offset, origin.tick - offset}; + return {origin.wall - + std::chrono::duration_cast( + offset), + origin.tick - offset}; } inline TimePoint& operator+=(TimePoint& self, Duration offset) { - self.wall += offset; + self.wall += + std::chrono::duration_cast(offset); self.tick += offset; return self; } diff --git a/src/datadog/span_data.cpp b/src/datadog/span_data.cpp index 52456cfa..bf83cc32 100644 --- a/src/datadog/span_data.cpp +++ b/src/datadog/span_data.cpp @@ -89,16 +89,16 @@ Expected msgpack_encode(std::string& destination, const SpanData& span) { }, "start", [&](auto& destination) { msgpack::pack_integer( - destination, std::chrono::duration_cast( + destination, std::uint64_t(std::chrono::duration_cast( span.start.wall.time_since_epoch()) - .count()); + .count())); return Expected{}; }, "duration", [&](auto& destination) { msgpack::pack_integer( destination, - std::chrono::duration_cast(span.duration) - .count()); + std::uint64_t(std::chrono::duration_cast(span.duration) + .count())); return Expected{}; }, "error", [&](auto& destination) {