diff -pru boost-1.41.0.cmake0.orig/boost/date_time/int_adapter.hpp boost-1.41.0.cmake0/boost/date_time/int_adapter.hpp --- boost-1.41.0.cmake0.orig/boost/date_time/int_adapter.hpp 2013-10-02 12:27:41.000000000 +0200 +++ boost-1.41.0.cmake0/boost/date_time/int_adapter.hpp 2013-10-02 08:51:05.000000000 +0200 @@ -134,7 +134,7 @@ public: { return (compare(rhs) == 0); } - bool operator==(const int& rhs) const + bool operator==(const int_type& rhs) const { // quiets compiler warnings bool is_signed = std::numeric_limits::is_signed; @@ -151,7 +151,7 @@ public: { return (compare(rhs) != 0); } - bool operator!=(const int& rhs) const + bool operator!=(const int_type& rhs) const { // quiets compiler warnings bool is_signed = std::numeric_limits::is_signed; @@ -168,7 +168,7 @@ public: { return (compare(rhs) == -1); } - bool operator<(const int& rhs) const + bool operator<(const int_type& rhs) const { // quiets compiler warnings bool is_signed = std::numeric_limits::is_signed; diff -pru boost-1.41.0.cmake0.orig/boost/date_time/time_duration.hpp boost-1.41.0.cmake0/boost/date_time/time_duration.hpp --- boost-1.41.0.cmake0.orig/boost/date_time/time_duration.hpp 2013-10-02 12:27:41.000000000 +0200 +++ boost-1.41.0.cmake0/boost/date_time/time_duration.hpp 2013-10-02 08:47:48.000000000 +0200 @@ -164,7 +164,7 @@ namespace date_time { { return duration_type(ticks_ + d.ticks_); } - duration_type operator/(long long divisor) const + duration_type operator/(tick_type divisor) const { return duration_type(ticks_ / divisor); } @@ -179,17 +179,17 @@ namespace date_time { return duration_type(ticks_); } //! Division operations on a duration with an integer. - duration_type operator/=(long long divisor) + duration_type operator/=(tick_type divisor) { ticks_ = ticks_ / divisor; return duration_type(ticks_); } //! Multiplication operations an a duration with an integer - duration_type operator*(long long rhs) const + duration_type operator*(tick_type rhs) const { return duration_type(ticks_ * rhs); } - duration_type operator*=(long long divisor) + duration_type operator*=(tick_type divisor) { ticks_ = ticks_ * divisor; return duration_type(ticks_); diff -pru boost-1.41.0.cmake0.orig/libs/date_time/test/posix_time/testduration.cpp boost-1.41.0.cmake0/libs/date_time/test/posix_time/testduration.cpp --- boost-1.41.0.cmake0.orig/libs/date_time/test/posix_time/testduration.cpp 2013-10-02 12:27:41.000000000 +0200 +++ boost-1.41.0.cmake0/libs/date_time/test/posix_time/testduration.cpp 2013-10-02 12:39:44.000000000 +0200 @@ -61,21 +61,25 @@ main() t_5.fractional_seconds() == 5)); t_5 = time_duration(3,15,8,0) / 2; check("divide int", t_5 == time_duration(1,37,34,0)); - t_5 = time_duration(1000000, 0, 0, 0); - t_5 /= 3600000000LL; - check("divide equal long long", time_duration(0, 0, 1, 0) == t_5); - t_5 = time_duration(1000000, 0, 0, 0) / 3600000000LL; - check("divide long long", time_duration(0, 0, 1, 0) == t_5); { time_duration td = hours(5); td *= 5; check("mult-equals int", time_duration(25,0,0,0) == td); } - t_5 = time_duration(0, 0, 1, 0); - t_5 *= 3600000000LL; - check("multiply equals long long", time_duration(1000000, 0, 0, 0) == t_5); - t_5 = time_duration(0, 0, 1, 0) * 3600000000LL; - check("multiply long long", time_duration(1000000, 0, 0, 0) == t_5); + if (sizeof(time_duration::tick_type) == 8) + { + std::cout << "testing time_duration 64-bit multiplication and division" << std::endl; + t_5 = time_duration(0, 0, 1, 0); + t_5 *= 3600000000LL; + check("multiply equals long long", time_duration(1000000, 0, 0, 0) == t_5); + t_5 = time_duration(0, 0, 1, 0) * 3600000000LL; + check("multiply long long", time_duration(1000000, 0, 0, 0) == t_5); + t_5 = time_duration(1000000, 0, 0, 0); + t_5 /= 3600000000LL; + check("divide equal long long", time_duration(0, 0, 1, 0) == t_5); + t_5 = time_duration(1000000, 0, 0, 0) / 3600000000LL; + check("divide long long", time_duration(0, 0, 1, 0) == t_5); + } t_5 = t_2 + t_1; //VC6 goes ambiguous on the next line...