This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gcc-3.1 istream_iterator bug


This simple program fails to compile with gcc-3.1:

-------------------------------
#include <iostream>
#include <iterator>
#include <vector>
#include <utility>

template<typename charT, typename traits, typename T1, typename T2>
inline std::basic_istream<charT,traits>& operator>> (std::basic_istream<charT,traits>& is, std::pair<T1,T2>& p) {
  T1 t1;
  T2 t2;
  is >> t1 >> t2;
  if (is)
    p = std::pair<T1,T2> (t1, t2);
  return is;
}

int main () {
  std::vector<int> v;

  typedef std::pair<double,double> pt;

  std::copy (std::istream_iterator<pt> (std::cin), std::istream_iterator<pt> (), std::back_inserter (v));
}
-------------------------

Here's what happens:
g++3 -c bug.cc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.1/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib
Thread model: posix
gcc version 3.1 20020604 (Red Hat Linux 7.3 3.1-5)
 /usr/lib/gcc-lib/i386-redhat-linux/3.1/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ bug.cc -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase bug.cc -version -o /tmp/ccBHb9Ob.s
GNU CPP version 3.1 20020604 (Red Hat Linux 7.3 3.1-5) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.1 20020604 (Red Hat Linux 7.3 3.1-5) (i386-redhat-linux)
	compiled by GNU C version 3.1 20020604 (Red Hat Linux 7.3 3.1-5).
ignoring nonexistent directory "/usr/i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++-v3
 /usr/include/g++-v3/i386-redhat-linux
 /usr/include/g++-v3/backward
 /usr/local/include
 /usr/lib/gcc-lib/i386-redhat-linux/3.1/include
 /usr/include
End of search list.
/usr/include/g++-v3/bits/stream_iterator.h: In member function `void 
   std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::_M_read() [with _Tp = 
   main()::pt, _CharT = char, _Traits = std::char_traits<char>, _Dist = 
   ptrdiff_t]':
/usr/include/g++-v3/bits/stream_iterator.h:60:   instantiated from `std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(std::basic_istream<_CharT, _Traits>&) [with _Tp = main()::pt, _CharT = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]'
bug.cc:21:   instantiated from here
/usr/include/g++-v3/bits/stream_iterator.h:96: no match for `
   std::basic_istream<char, std::char_traits<char> >& >> main()::pt&' operator
/usr/include/g++-v3/bits/istream.tcc:82: 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>]
/usr/include/g++-v3/bits/istream.tcc:91:                 
   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>]
/usr/include/g++-v3/bits/istream.tcc:100:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, 
   _Traits = std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:109:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(bool&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:136:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(short int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:173:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(short unsigned int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:200:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:237:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(unsigned int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:264:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(long int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:291:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(long unsigned int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:319:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(long long int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:346:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(long long unsigned int&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:374:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(float&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:401:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(double&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:428:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(long double&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:455:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(void*&) [with _CharT = char, _Traits = 
   std::char_traits<char>]
/usr/include/g++-v3/bits/istream.tcc:482:                 
   std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
   _Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = 
   char, _Traits = std::char_traits<char>]
/usr/include/g++-v3/istream:236:                 std::basic_istream<char, 
   _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned 
   char&) [with _Traits = std::char_traits<char>]
/usr/include/g++-v3/istream:241:                 std::basic_istream<char, 
   _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&) 
   [with _Traits = std::char_traits<char>]
/usr/include/g++-v3/istream:250:                 std::basic_istream<char, 
   _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned 
   char*) [with _Traits = std::char_traits<char>]
/usr/include/g++-v3/istream:255:                 std::basic_istream<char, 
   _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*) 
   [with _Traits = std::char_traits<char>]
/usr/include/g++-v3/bits/stl_algobase.h: In function `_OutputIter 
   std::__copy(_InputIter, _InputIter, _OutputIter, std::input_iterator_tag) 
   [with _InputIter = std::istream_iterator<main()::pt, char, 
   std::char_traits<char>, ptrdiff_t>, _OutputIter = 
   std::back_insert_iterator<std::vector<int, std::allocator<int> > >]':
/usr/include/g++-v3/bits/stl_algobase.h:260:   instantiated from `_OutputIter std::__copy_aux2(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = std::istream_iterator<main()::pt, char, std::char_traits<char>, ptrdiff_t>, _OutputIter = std::back_insert_iterator<std::vector<int, std::allocator<int> > >]'
/usr/include/g++-v3/bits/stl_algobase.h:303:   instantiated from `_OutputIter std::__copy_ni2(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = std::istream_iterator<main()::pt, char, std::char_traits<char>, ptrdiff_t>, _OutputIter = std::back_insert_iterator<std::vector<int, std::allocator<int> > >]'
/usr/include/g++-v3/bits/stl_algobase.h:323:   instantiated from `_OutputIter std::__copy_ni1(_InputIter, _InputIter, _OutputIter, __false_type) [with _InputIter = std::istream_iterator<main()::pt, char, std::char_traits<char>, ptrdiff_t>, _OutputIter = std::back_insert_iterator<std::vector<int, std::allocator<int> > >]'
/usr/include/g++-v3/bits/stl_algobase.h:349:   instantiated from `_OutputIter std::copy(_InputIter, _InputIter, _OutputIter) [with _InputIter = std::istream_iterator<main()::pt, char, std::char_traits<char>, ptrdiff_t>, _OutputIter = std::back_insert_iterator<std::vector<int, std::allocator<int> > >]'
bug.cc:21:   instantiated from here
/usr/include/g++-v3/bits/stl_algobase.h:228: no match for `
   std::back_insert_iterator<std::vector<int, std::allocator<int> > >& = const 
   std::pair<double, double>&' operator
/usr/include/g++-v3/bits/stl_iterator.h:355: candidates are: 
   std::back_insert_iterator<_Container>& 
   std::back_insert_iterator<_Container>::operator=(_Container::const_reference)
   [with _Container = std::vector<int, std::allocator<int> >]
/usr/include/g++-v3/bits/stl_iterator.h:330:                 
   std::back_insert_iterator<std::vector<int, std::allocator<int> > >& 
   std::back_insert_iterator<std::vector<int, std::allocator<int> > 
   >::operator=(const std::back_insert_iterator<std::vector<int, 
   std::allocator<int> > >&)

Compilation exited abnormally with code 1 at Mon Aug 26 15:59:43


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]