http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59568

            Bug ID: 59568
           Summary: complex type operator>> does not set eofbit for input
                    streams.
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Physeterm at yahoo dot com

Created attachment 31489
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31489&action=edit
g++ -v

(Actually, it is set, it's just cleared before the return to caller)

The problem as I understand it is that the call to __is.putback(__ch)
resets the eofbit to 0, (in C++11) after a valid eof has been detected.
The next extraction operation fails on attempting to get a char type
but the eofbit is not set to 1.

This precludes the ability to do error checking on input files.

A simple solution I think would be to test for the eofbit before
attempting the putback. ie:

   else 
   {
      if (! __is.eof()) {
         __is.putback(__ch);
         __is >> __re_x;
         __x = __re_x;
      }
   }
   return __is;
}

in file /usr/include/c++/4.8.1/complex (This only fixes int types)

Reply via email to