On 27 April 2011 06:11, Jeffrey Walton wrote: > On Tue, Apr 26, 2011 at 8:55 AM, Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote: >> >>> >>>> [SNIP] >>>> >>>> Please try to reproduce the error with a minimal example to show >>>> whether you get that error just from including a header, or only under >>>> certain circumstances. >>> >>> I managed to track it down to the following test.cpp file: >>> >>> #include <cmath> >>> #include <mgl/mgl.h> >>> #include <algorithm> >>> >>> Where mgl is from the wxWidgets library, version 2.8.11 >>> >>> When I changed the order to: >>> #include <cmath> >>> #include <algorithm> >>> #include <mgl/mgl.h> >>> >>> It worked. >> >> That would imply the mgl.h header does something it shouldn't, such as >> defining isnan as a macro, or something else which breaks the standard >> library header. >> > I've also seen similar in the past. I seem to recall (like Anna) that > the C++ gear had to be included before [some of] the standard linux > stuff such as sys/types, sys/socket.h, and netinet/in.h. Fortunately, > the standard linux headers do a good job of guarding for multiple > definitions (when they follow C++ headers). The C++ headers, on the > other hand, do not always do a good job (when they follow standard > headers). Examples please. That would be a serious bug and should be reported to bugzilla rather than alluded to vaguely on a mailing list. mgl/mgl.h is not "standard linux stuff" so we can't do anything about that, but I'm pretty sure there are no conflicts between libstdc++ headers and glibc headers (when used correctly)