From: Rudolf Polzer Newsgroups: comp.os.msdos.djgpp Subject: Re: Internal compiler error - not covered by the FAQ Date: Wed, 01 Nov 2000 12:20:23 GMT Organization: Deja.com - Before you buy. Lines: 74 Message-ID: <8tp1q3$n3r$1@nnrp1.deja.com> References: <8t3lg2$o6t$1 AT nnrp1 DOT deja DOT com> <39f5dd04 DOT 35951623 AT news DOT freeserve DOT net> NNTP-Posting-Host: 212.185.252.67 X-Article-Creation-Date: Wed Nov 01 12:20:23 2000 GMT X-Http-User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) X-Http-Proxy: HTTP/1.0 spcss37. (IBM-PROXY-WTE), 1.1 x54.deja.com:80 (Squid/1.1.22) for client 212.185.252.67 X-MyDeja-Info: XMYDJUIDrpolzer To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com In article <39f5dd04 DOT 35951623 AT news DOT freeserve DOT net>, dontmailme AT iname DOT com wrote: > Rudolf Polzer wrote: > > > And, as I discovered, DJGPP puts all standard library names into the > > global namespace, > > It's GCC that does that. However, it also puts them in namespace std, > (or, at least, acts as if it does) so there's little problem in practice. I didnt notice that. But I will change my code so that it puts std:: before everything. BTW, there is another problem: std::map < ::Sound::Sound > ::iterator i = m.begin() gives an parse error, while typedef ::Sound::Sound Snd; // ... std::map < Snd > ::iterator i = m.begin() does not. Why? > > > and recompiling in standard-compliant compilers fails. > > Only if you were taking advantage of the fact that GCC dumps everything > into the global namespace. (I've seen a number of posts where people > have done that - there's an awful lot of broken C++ code out there...) I did not take advantage of it, I looked at some other code and concluded GCC does not put everything into std, and so I also assumed everything was global. But after trying to recompile in MSVC++... but I'll fix it and do not have to keep track of two source trees (I can just try to compile in MSVC++ and fix all places where the compiler reports errors). And there seems to be another problem: When I switch on -Wall, my programs do not compile any more with messages like this: In method `M::M(const int &)': test.cpp(12) Error: instantiated from here test.cpp(6) Warning: statement with no effect There were some errors Source: template class M { public: M (const X &x) { 1; // statement with no effect } }; int main() { M (1); // instantiated from here } The same program compiles when warnings are switched off. (the error really occurs in some STL templates that compare int with size_t) [...] (I dont need it any more) -- Rudolf Polzer REBOUNCE - http://www.mycgiserver.com/~rebounce Sent via Deja.com http://www.deja.com/ Before you buy.