
Hi there. I get the following error when I try to compile code using boost::date_time::posix_time: c:\PROGRAM FILES\BOOST_1_30_0\boost/date_time/posix_time/time_formatters.hpp(43): error: more than one operator "<<" matches these operands: function "std::basic_ostream<_E, _Tr>::operator<<(std::_Bool={bool={bool}}) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(short) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(unsigned short) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(int) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(unsigned int) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(long) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(unsigned long) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(float) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(double) [with _E=char, _Tr=std::char_traits<char>]" function "std::basic_ostream<_E, _Tr>::operator<<(long double) [with _E=char, _Tr=std::char_traits<char>]" operand types are: std::basic_ostream<char, std::char_traits<char>> << boost::posix_time::time_duration::fractional_seconds_type << frac_sec; Looking at the offending file (time_formatters.hpp, line 43 and vicinity) gives: #if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 boost::int64_t frac_sec = td.fractional_seconds(); // JDG [7/6/02 VC++ compatibility] char buff[32]; _i64toa(frac_sec, buff, 10); #else time_duration::fractional_seconds_type frac_sec = td.fractional_seconds(); #endif if (frac_sec != 0) { ss << "." << std::setw(time_duration::num_fractional_digits()) << std::setfill('0') // JDG [7/6/02 VC++ compatibility] #if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 << buff; #else << frac_sec; //!!! Line 43 !!!// #endif It appears that there is not a streaming operator defined for the time_duration::fractional_seconds_type type. Looking deeper into this issue was a bit of nightmare; since the offending type consists of numerous nested typdefs etc. etc. If anyone has a short and sweet answer to my essay of a question, I would appreciate it. The obvious answer of "don't use the Intel compiler" will not suffice! Saying that, when I switched from the Intel compiler to bad old MSVC6 I had not problems. But our company's software requires the performance gain provided by the Intel compiler on Windows. Another issue, I saw that during installation of Boost, it is possible using STLPort and MSVC6 together, but (for the reasons mentioned above), why not STLPort with the Intel compiler? I did ask the same question some time before now, but no-one bothered to answer. I would really appreciate any help in this regard! Greetings, Andre.