date_time: local_date_time small fix

Good morning. Consider next use case: struct my_ldt : public boost::local_time::local_date_time_base<>{ my_ldt() : boost::local_time::local_date_time_base<>( boost::posix_time::ptime() , boost::shared_ptr< boost::date_time::time_zone_base<boost::posix_time::ptime> >() ) {} }; int _tmain(int argc, _TCHAR* argv[]) { boost::posix_time::ptime t; my_ldt m; m == t; //^^^^^^^^ //this will not compile ( at least on VC 7.1 ) //the error is error C2678: binary '==' : no operator found which takes a left-hand operand of type 'my_ldt' (or there is no acceptable conversion) } fix: Add next code to the local_date_time_base class typedef date_time::base_time<utc_time_, boost::posix_time::posix_time_system> base_type; using base_type::operator==; using base_type::operator<; using base_type::operator-; Thanks Roman Yakovenko

On Sun, 27 Nov 2005 09:56:33 +0200, Roman Yakovenko wrote
Good morning.
Consider next use case:
struct my_ldt : public boost::local_time::local_date_time_base<>{ my_ldt() : boost::local_time::local_date_time_base<>( boost::posix_time::ptime() , boost::shared_ptr< boost::date_time::time_zone_base<boost::posix_time::ptime> >() ) {}
};
int _tmain(int argc, _TCHAR* argv[]) { boost::posix_time::ptime t; my_ldt m; m == t; //^^^^^^^^ //this will not compile ( at least on VC 7.1 ) //the error is error C2678: binary '==' : no operator found which takes a left-hand operand of type 'my_ldt' (or there is no acceptable conversion) }
fix:
Add next code to the local_date_time_base class
typedef date_time::base_time<utc_time_, boost::posix_time::posix_time_system> base_type;
using base_type::operator==; using base_type::operator<; using base_type::operator-;
Actually it's intentional to not do an automatic conversion there. Call utc_time() to get the ptime. So: boost::posix_time::ptime t; my_ldt m; m.utc_time() == t; Jeff
participants (2)
-
Jeff Garland
-
Roman Yakovenko