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

Reply via email to