Unfortunatly, the solution does not seem to work. "std::vector<typename type>::const_iterator pos;" Gives me the errors: error: template argument 1 is invalid error: template argument 2 is invalid error: expected `;' before '::' token I also tried doing : "typename std::vector<type>::const_iterator pos;" As someone else suggested, but that gives me the same errors as previously. On Mon, 18 Oct 2004 10:33:09 -0600, lrtaylor@xxxxxxxxxx <lrtaylor@xxxxxxxxxx> wrote: > Try this: > > std::vector<typename type>::const_iterator pos; > > Thanks, > Lyle > > > > > -----Original Message----- > From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] On > Behalf Of James Urquhart > Sent: Saturday, October 16, 2004 4:07 PM > To: gcc-help@xxxxxxxxxxx > Subject: Confusing template error... > > Hi there, > > I was wondering if anyone has encountered this rather bizzare syntax > error before. > > The code is as follows (NOTE: this is inside a class { }) : > > template <class type> > inline OutputStream & operator << (OutputStream & out, const > std::vector<type> &v) > { > std::vector<type>::const_iterator pos; > pos = v.begin() ; > while (pos != v.end()) > { > out << *pos++ ; > } > return out ; > } > > (using the good ol' STL vector) > > in the "const_iterator" line, GCC claims : > error: expected `;' before "pos" > > in addition, every time the "<<" operator is used, GCC claims : > error: dependent-name ` std::vector<type,std::allocator<_CharT> > >::const_iterator' is parsed as a non-type, but instantiation yields a > type > note: say `typename std::vector<type,std::allocator<_CharT> > >::const_iterator' if a type is meant > > (basically referring again to that line) > If i remove the "pos;" at the end of the line, gcc seems to accept it > - but then i don't have a "pos" variable, which is pretty useless. > > Now onto the next problem... > > With this code (again, in a class { }) : > > template <class type> > inline InputStream & operator >> (InputStream & in, std::vector<type> > &v) > { > std::vector<type>::iterator pos = v.begin() ; > while (pos != v.end()) > { > in >> *pos++ ; > } > return in ; > } > > Every time ">>" is used on this class, GCC claims on the "iterator" > line: > error: dependent-name ` std::vector<type,std::allocator<_CharT> > >::iterator' is parsed as a non-type, but instantiation yields a type > note: say `typename std::vector<type,std::allocator<_CharT> > >::iterator' if a type is meant. > > And the gcc variant : > gcc version 3.4.2 (Gentoo Linux 3.4.2-r2, ssp-3.4.1-1, pie-8.7.6.5) > > Thanks for any help. >