From 22b53b991da097558f42ee1bcbdc119a1a8f0ddd Mon Sep 17 00:00:00 2001 From: William Woodall Date: Fri, 13 Mar 2015 20:41:10 -0700 Subject: [PATCH] [windows] workaround for compiler error in Windows See: https://connect.microsoft.com/VisualStudio/feedback/details/1179590 --- rclcpp/include/rclcpp/rclcpp.hpp | 10 ++++++---- rclcpp/include/rclcpp/utilities.hpp | 5 ++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/rclcpp/include/rclcpp/rclcpp.hpp b/rclcpp/include/rclcpp/rclcpp.hpp index d4004fd..848308d 100644 --- a/rclcpp/include/rclcpp/rclcpp.hpp +++ b/rclcpp/include/rclcpp/rclcpp.hpp @@ -31,9 +31,10 @@ const std::chrono::seconds operator "" _s(unsigned long long s) { return std::chrono::seconds(s); } -const std::chrono::duration operator "" _s(long double s) +const std::chrono::nanoseconds operator "" _s(long double s) { - return std::chrono::duration(s); + return std::chrono::duration_cast( + std::chrono::duration(s)); } const std::chrono::nanoseconds @@ -41,10 +42,11 @@ operator "" _ns(unsigned long long ns) { return std::chrono::nanoseconds(ns); } -const std::chrono::duration +const std::chrono::nanoseconds operator "" _ns(long double ns) { - return std::chrono::duration(ns); + return std::chrono::duration_cast( + std::chrono::duration(ns)); } using rclcpp::node::Node; diff --git a/rclcpp/include/rclcpp/utilities.hpp b/rclcpp/include/rclcpp/utilities.hpp index 1e03b19..b2afd8c 100644 --- a/rclcpp/include/rclcpp/utilities.hpp +++ b/rclcpp/include/rclcpp/utilities.hpp @@ -133,13 +133,12 @@ get_global_sigint_guard_condition() return ::g_sigint_guard_cond_handle; } -template bool -sleep_for(const std::chrono::duration& sleep_duration) +sleep_for(const std::chrono::nanoseconds& nanoseconds) { // TODO: determine if posix's nanosleep(2) is more efficient here std::unique_lock lock(::g_interrupt_mutex); - auto cvs = ::g_interrupt_condition_variable.wait_for(lock, sleep_duration); + auto cvs = ::g_interrupt_condition_variable.wait_for(lock, nanoseconds); return cvs == std::cv_status::no_timeout; }