GCC 4.2.0 is unable to compile STLport due to a header conflict. When compiling any C++ program that includes <iostream>:
In file included from c:/aaronwl/gcc/root/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../../include/c++/4.2.0/../4.2.0/cmath:52, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_cmath.h:31, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_cstdlib.h:162, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_locale.h:27, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_ios_base.h:30, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_ios.h:23, from /aaronwl/stlport/STLport-5.1.3/stlport/stl/_istream.h:27, from /aaronwl/stlport/STLport-5.1.3/stlport/iostream:39, from stuff.cpp:1: c:/aaronwl/gcc/root/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../../include/c++/4.2.0/ext/type_traits.h:184: error: 'streamsize' in namespace 'std' does not name a type c:/aaronwl/gcc/root/bin/../lib/gcc/i686-pc-mingw32/4.2.0/../../../../include/c++/4.2.0/ext/type_traits.h:189: error: expected initializer before '__numeric_traits_floating' The problem here is that STLport is including <cmath> provided by GCC, assuming that it will play well. However, GCC's <cmath> needs std::streamsize, and assumes <iosfwd> will provide it. <iosfwd>, provided by STLport, declares it as stlpmtx_std::streamsize. std is later redefined to be stlpmtx_std, but this doesn't happen in time for <cmath>, because this doesn't happen until we exit from STLport-provided system headers. Thus the declaration can't be found. I'm not sure who's problem this is, or whether GCC is inclined to do anything to fix it. But I thought I'd report it because STLport works with previous versions, and this will probably be a problem for many users. -- Summary: GCC 4.2.0 incompatible with STLport 5.1.3 Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: aaronavay62 at aaronwl dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31481