ros / roscpp_core

ros distribution sandbox
89 stars 116 forks source link

Argument to boost microseconds must be integral in Boost >= 1.67 #79

Closed lsolanka closed 6 years ago

lsolanka commented 6 years ago

With Boost >= 1.67 compilation of roscpp_core fails because boost now requires the microseconds constructor argument to be integral.

The git diff boost-1.66.0 include/boost/date_time/time_duration.hpp in boost date_time git repository confirms that the constructor to boost::date_time::subsecond_duration was made more stringent:

@@ -278,14 +280,15 @@ namespace date_time {
     BOOST_STATIC_CONSTANT(boost::int64_t, adjustment_ratio = (traits_type::ticks_per_second >= frac_of_second ? traits_type::ticks_per_second / frac_of_second : frac_of_second / traits_type::ticks_per_second));

   public:
-    explicit subsecond_duration(boost::int64_t ss) :
+    // The argument (ss) must be an integral type
+    template <typename T>
+    explicit subsecond_duration(T const& ss,
+                                typename boost::enable_if<boost::is_integral<T>, void>::type* = 0) :
       base_duration(impl_type(traits_type::ticks_per_second >= frac_of_second ? ss * adjustment_ratio : ss / adjustment_ratio))
     {
     }
   };

The patch here simply makes it an integer, which should not make any difference, if I'm correct?

dirk-thomas commented 6 years ago

Thank you for the patch!