[cfe-dev] Problems with modern versions of libstdc++
Christopher Jefferson
chris at bubblescope.net
Wed Feb 17 05:40:33 PST 2010
I have been using clang++ to compile some code, and have been finding problems arising from which version of g++ is installed as the system compiler. I was wondering what the policy is on fixing bugs and keeping this working:
Using g++ 4.2 as the system compiler, the following works fine:
#include <tr1/array>
#include <ostream>
int main(void) {}
Once I update to g++ 4.4, #include <tr1/array> breaks, as g++ switches to using variadic templates even in TR1.
More worryingly, once I upgrade to a current svn version of g++ 4.5, <ios> (and therefore most files involving streams, including ostream/istream/fstream) fails to compile due to the following code in locale_facets.h
template<typename _Tv>
void
__convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,
const __c_locale& __cloc);
template<>
void
__convert_to_v(const char*, float&, ios_base::iostate&,
const __c_locale&) throw();
Which fails to compile with the error:
/gccsvn/lib/gcc/x86_64-apple-darwin10.2.0/4.5.0/../../../../include/c++/4.5.0/bits/locale_facets.h:71:5: error:
exception specification in declaration does not match previous declaration
__convert_to_v(const char*, float&, ios_base::iostate&,
^
/gccsvn/lib/gcc/x86_64-apple-darwin10.2.0/4.5.0/../../../../include/c++/4.5.0/bits/locale_facets.h:65:5: note:
previous declaration is here
__convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,
^
Should such bugs be reported up-stream? Would clang add support for such g++-specific code, if it was not fixed upstream?
Sorry for the slightly vague question,
Thanks, Chris
More information about the cfe-dev
mailing list