
Hello! Please look at this simple example: krivenok@develop2 11:51:44 /tmp/date $ cat date.cpp #include <string> #include <boost/date_time.hpp> const std::string Date(boost::posix_time::ptime posix_time) { return boost::gregorian::to_iso_extended_string(posix_time.date()); } krivenok@develop2 11:51:54 /tmp/date $ I have two compilers (gcc-4.1.2 and gcc-4.3.2) and boost-1.37.0 installed on my linux host. I wrote simple test to demonstrate the problem: krivenok@develop2 11:51:54 /tmp/date $ export CC=g++-4.1.2 krivenok@develop2 11:52:32 /tmp/date $ for((i=0;i<4;i++)) do echo "Optimization level $i" ; $CC -O$i -Wall -I/usr/local/dev/boost/include/ date.cpp -c ; done Optimization level 0 Optimization level 1 Optimization level 2 Optimization level 3 krivenok@develop2 11:52:40 /tmp/date $ export CC=g++-4.3.2 krivenok@develop2 11:52:44 /tmp/date $ for((i=0;i<4;i++)) do echo "Optimization level $i" ; $CC -O$i -Wall -I/usr/local/dev/boost/include/ date.cpp -c ; done Optimization level 0 Optimization level 1 /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp: In function 'const std::string Date(boost::posix_time::ptime)': /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:68: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:64: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here Optimization level 2 /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp: In function 'const std::string Date(boost::posix_time::ptime)': /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:68: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:64: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here Optimization level 3 /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp: In function 'const std::string Date(boost::posix_time::ptime)': /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:68: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here /usr/local/dev/boost/include/boost/date_time/constrained_value.hpp:64: warning: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' may be used uninitialized in this function /usr/local/dev/boost/include/boost/date_time/gregorian_calendar.ipp:122: note: 'year.boost::gregorian::greg_year::<anonymous>.boost::CV::constrained_value<boost::CV::simple_exception_policy<short unsigned int, 1400u, 10000u, boost::gregorian::bad_year> >::value_' was declared here krivenok@develop2 11:52:50 /tmp/date $ As you can see the example compiled using gcc-4.1.2 compiles without any warnings regardless of optimization level. However, gcc-4.3.2 produces a lot of strange warnings if optimization is enabled. I don't really know is it gcc or boost issue. Is it safe to use boost::date_time with gcc-4.3.2 and -O3 optimization level? Thank you beforehand! -- Sincerely yours, Dmitry V. Krivenok Orange System Company Saint-Petersburg, Russia work phone: +7 812 332-32-40 cellular phone: +7 921 576-70-91 e-mail: krivenok@orangesystem.ru web: http://www.orangesystem.ru skype: krivenok_dmitry jabber: krivenok_dmitry@jabber.ru icq: 242-526-443