istream_iterator bug

Neal D. Becker nbecker@hns.com
Tue Aug 6 05:25:00 GMT 2002


The first call to "copy" is OK, but the second is not.  I believe this
is a bug:

bug.cc:
#include <iostream>
#include <iterator>
#include <fstream>
#include <algorithm>
#include <vector>

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

  std::ifstream t("test");
  std::copy (std::istream_iterator<int> (t), std::istream_iterator<int> (), std::back_inserter (v));

  std::copy (std::istream_iterator<int> (std::ifstream ("test")), std::istream_iterator<int> (), std::back_inserter (v));
}

g++3 -c -v bug.cc
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/ccQZPTkP.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.
bug.cc: In function `int main()':
bug.cc:13: no matching function for call to `std::istream_iterator<int, char, 
   std::char_traits<char>, ptrdiff_t>::istream_iterator(std::ifstream)'
/usr/include/g++-v3/bits/stream_iterator.h:63: candidates are: 
   std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator(const 
   std::istream_iterator<_Tp, _CharT, _Traits, _Dist>&) [with _Tp = int, _CharT 
   = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]
/usr/include/g++-v3/bits/stream_iterator.h:60:                 
   std::istream_iterator<_Tp, _CharT, _Traits, 
   _Dist>::istream_iterator(std::basic_istream<_CharT, _Traits>&) [with _Tp = 
   int, _CharT = char, _Traits = std::char_traits<char>, _Dist = ptrdiff_t]
/usr/include/g++-v3/bits/stream_iterator.h:58:                 
   std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::istream_iterator() [with 
   _Tp = int, _CharT = char, _Traits = std::char_traits<char>, _Dist = 
   ptrdiff_t]

Compilation exited abnormally with code 1 at Tue Aug  6 08:23:34



More information about the Gcc-bugs mailing list