RedHat 8.0 `istream_iterator' undeclared (first use this function)

MR nimrod.bm@optusnet.com.au
Sat May 24 11:07:00 GMT 2003


Hello STL gurus, 


I have a bit of a problem getting my iterators to work with libstdc++
3.2-7 (redhat 8.0), GCC 3.2.

with a very simple program (merges two files):

#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

main(int argc, char**argv) {
    if (argc < 3) {

	cout << "You must supply two input files.\n";

	exit(1);
    }

    ifstream in1(argv[1]), in2(argv[2]);
    if(!in1||!in2) {
	cout << "File open error\n";
	exit(1);
    }

    merge(
	istream_iterator<float>(in1),
	istream_iterator<float>(),
	istream_iterator<float>(in2),
	istream_iterator<float>(),
	ostream_iterator<float>(cout, "\n")
    );
    return 0;
}

I get the following complaints from the compiler:
algdemo.cpp:22: `istream_iterator' undeclared (first use this function)
algdemo.cpp:22: (Each undeclared identifier is reported only once for
each 
   function it appears in.)
algdemo.cpp:22: parse error before `>' token


I call the compile with g++ -g -Wall algdemo.cpp


So where am I going wrong?  What do I need to do to get the
istream_iterators and ostream_iterators to work?

Thanks for your help, it is greatly appreciated.

Matt






More information about the Gcc-help mailing list