Home » Coding » c++ » puzzling error from GCC 3.4.4
puzzling error from GCC 3.4.4 [message #17403] Sun, 07 October 2007 13:51 Go to next message
drn  is currently offline drn
Messages: 1
Registered: October 2007
Junior Member
I'm porting some legacy code from BC++5.01 to GCC C++.
I'm a bit baffled - why does GCC produce the errors below using a
temporary in the line:
istrstream( argv[2] /*"49:59.067 N 011:38.317 E"*/ ) >>
mapReferencePoint;
No complaints when its split into two lines as follows:
istrstream is( argv[2] /*"49:59.067 N 011:38.317 E"*/ );
is >> mapReferencePoint;

Thanks in advance for any help !
Best Regards, Dave

The correct match below is:
parsTool.hpp:165: note: std::istream& operator>>(std::istream&,
NavLatLongPoint&)

$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/
configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/
lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --
enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-
gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --
disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --
enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-
sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

Error output:

airparse.cpp: In function `int main(int, char**)':
airparse.cpp:680: error: no match for 'operator>>' in
'istrstream((*(argv + 8u))) >> mapReferencePoint'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:87:
note: 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/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:93:
note: 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/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:102:
note: 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/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:111:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(bool&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:133:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(short int&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:164:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(short unsigned int&) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:186:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(int&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:217:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(unsigned int&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:239:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(long int&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:261:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(long unsigned int&) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:284:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(long long int&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:306:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(long long unsigned int&) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:329:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(float&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:351:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(double&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:373:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(long double&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:395:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(void*&) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/istream.t cc:417:
note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with
_CharT = char, _Traits = std::char_traits<char>]
parsTool.hpp:131: note: std::istream& operator>>(std::istream&,
LatitudeT&)
parsTool.hpp:136: note: std::istream& operator>>(std::istream&,
LongitudeT&)
parsTool.hpp:165: note: std::istream& operator>>(std::istream&,
NavLatLongPoint&)
airparse.cpp:174: note: std::istream& operator>>(std::istream&,
TNPAltitude&)
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iomanip:253: note:
std::basic_istream<_CharT, _Traits>&
std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setw)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iomanip:219: note:
std::basic_istream<_CharT, _Traits>&
std::operator>>(std::basic_istream<_CharT, _Traits>&,
std::_Setprecision) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iomanip:143: note:
std::basic_istream<_CharT, _Traits>&
std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setbase)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iomanip:108: note:
std::basic_istream<_CharT, _Traits>&
std::operator>>(std::basic_istream<_CharT, _Traits>&,
std::_Setiosflags) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iomanip:74: note:
std::basic_istream<_CharT, _Traits>&
std::operator>>(std::basic_istream<_CharT, _Traits>&,
std::_Resetiosflags) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/istream:692: note:
std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char*)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/istream:687: note:
std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/istream:651: note:
std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char&)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/istream:646: note:
std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
[with _Traits = std::char_traits<char>]
Re: puzzling error from GCC 3.4.4 [message #17405 is a reply to message #17403 ] Sun, 07 October 2007 14:34 Go to previous messageGo to next message
Ole Nielsby  is currently offline Ole Nielsby
Messages: 14
Registered: August 2007
Junior Member
<drn@nadler.com> wrote:
> I'm porting some legacy code from BC++5.01 to GCC C++.
> I'm a bit baffled - why does GCC produce the errors below using a
> temporary in the line:
> istrstream( argv[2] /*"49:59.067 N 011:38.317 E"*/ ) >>
> mapReferencePoint;
> No complaints when its split into two lines as follows:
> istrstream is( argv[2] /*"49:59.067 N 011:38.317 E"*/ );
> is >> mapReferencePoint;

C++ has a restriction that says, non-const references cannot bind
to temporaries, though many compilers allow it. I think that's what
happens here.
Re: puzzling error from GCC 3.4.4 [message #17412 is a reply to message #17403 ] Sun, 07 October 2007 17:49 Go to previous messageGo to next message
Gianni Mariani  is currently offline Gianni Mariani
Messages: 153
Registered: July 2007
Senior Member
drn@nadler.com wrote:
> I'm porting some legacy code from BC++5.01 to GCC C++.
> I'm a bit baffled - why does GCC produce the errors below using a
> temporary in the line:
> istrstream( argv[2] /*"49:59.067 N 011:38.317 E"*/ ) >>
> mapReferencePoint;
> No complaints when its split into two lines as follows:
> istrstream is( argv[2] /*"49:59.067 N 011:38.317 E"*/ );
> is >> mapReferencePoint;
>

re:
istrstream is( argv[2] /*"49:59.067 N 011:38.317 E"*/ )

a) The standard name is "std::istringstream".

b) The following code compiles.
#include <sstream>
#include <iostream>

int main( int argc, char ** argv)
{
int i;

std::istringstream("10") >> i;
}

So it may be an issue with how you defined your operator >>.

I ran into a number of issues when I placed the operator >> in a
namespace other than "std". This may be a bug with gcc 3.4.4 as I don't
recall running into it with the latest gcc compilers.

What does you declaration for operator>> look like ? Can you give us a
chunk-o-compilable-code ?
Re: puzzling error from GCC 3.4.4 [message #17413 is a reply to message #17412 ] Sun, 07 October 2007 19:47 Go to previous message
Old Wolf  is currently offline Old Wolf
Messages: 44
Registered: August 2007
Member
On Oct 8, 10:49 am, Gianni Mariani <gi3nos...@mariani.ws> wrote:
> istrstream is( argv[2] /*"49:59.067 N 011:38.317 E"*/ )
>
> a) The standard name is "std::istringstream".

istrstream and istringstream are different standard classes.
See D.7.2 [depr.istrstream] in the standard.
Previous Topic:What does istream::sync()?
Next Topic:Release file descriptor in c/c++
Goto Forum:
  


Current Time: Fri May 16 02:44:51 EDT 2008

Total time taken to generate the page: 0.45156 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 2.7.7.
Copyright ©2001-2007 FUD Forum Bulletin Board Software