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?
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 toboost::date_time::subsecond_duration
was made more stringent:The patch here simply makes it an integer, which should not make any difference, if I'm correct?