For the last few months, gcc 4.1 has had problems compling the following code in posRMSDPot.cc in xplor-nih...
IStringStream iNoComments( stripped ); // read NOEPot table CDSStringStreamBuf<char> dum; while ( !iNoComments.eof() && !iNoComments.fail() ) { String word; iNoComments >> word; if ( word.glob("assi*",1) ) { PosRMSDPot_Restraint* restraint = new PosRMSDPot_Restraint(this); iNoComments >> *restraint; if ( restraint->ok() ) { restraints_.append( restraint ); if (verbose()) cout << "PosRMSDPot::addRestraints: added restraint: " << *restraint << '\n'; } else { cout << "PosRMSDPot::addRestraints: error adding restraint.\n"; delete restraint; which generates an error... posRMSDPot.cc: In member function 'void PosRMSDPot::addRestraints(const String&)': posRMSDPot.cc:145: error: no match for 'operator>>' in 'iNoComments >> * restraint' /sw/lib/gcc4/lib/gcc/powerpc-apple-darwin8/4.1.0/../../../../include/c++/4.1.0/istream:131: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>& (*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] /sw/lib/gcc4/lib/gcc/powerpc-apple-darwin8/4.1.0/../../../../include/c++/4.1.0/istream:134: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] etc... which is the line "iNoComments >> *restraint;". There also is a compile error at... posRMSDPot.cc:150: error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(& std::cout)), ((const char*)"PosRMSDPot::addRestraints: added restraint: ")) << * restraint' /sw/lib/gcc4/lib/gcc/powerpc-apple-darwin8/4.1.0/../../../../include/c++/4.1.0/bits/ostream.tcc:67: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>] which is the line " << *restraint << '\n';". Any ideas why this breakage has occured and what the proper workaround is? GCC 4.0.2 doesn't have a problem with this source as did GCC 4.1 until a few months back. Jack