clang++ and extended initializer lists

Hi all,

I built clang version 2.9 (trunk 122051) on OpenSUSE 11.3 x86_64 using
its default compiler: gcc version 4.5.0 20100604 [gcc-4_5-branch
revision 160292] (SUSE Linux)
Then I tried to build clang with the newly built clang (configured in
another directory with CC=$HOME/bin/clang CXX=$HOME/bin/clang++), but
got the following error:

llvm[1]: Compiling Disassembler.cpp for Release+Asserts build
In file included from /home/csabe/LLVM/llvm/lib/Support/Disassembler.cpp:19:
/usr/include/c++/4.5/iomanip:63:12: error: expected expression
  { return { __mask }; }

This is because GCC's headers in this version use extended initializer lists:

  struct _Resetiosflags { ios_base::fmtflags _M_mask; };

  /**
   * @brief Manipulator for @c setf.
   * @param mask A format flags mask.

Correct, see http://clang.llvm.org/cxx_status.html .

Clang doesn't reliably support libstdc++ > 4.2, since that's when they started to use C++0x features.

Sebastian