Boost logo

Boost :

Subject: [boost] the <boost/detail/iomanip.hpp> header (please use it)
From: Bryce Lelbach (admin_at_[hidden])
Date: 2011-01-13 21:53:45

Hash: SHA1

On Linux, both clang and icc use GNU's C++ standard library by default. As of
version 4.5 of GNU's stdlib, a new implementation of the <iomanip> header has
been added, which makes use of C++0x features which only GCC supports (the
latest versions of clang, e.g. a very recent nightly build, might work; intel
certainly won't). The refactored <iomanip> header in GNU's stdlib does not
detect C++0x support and fallback on the old C++98 friendly code, which
unfortunately leaves clang-linux and intel-linux users in a bit of a bind. In
particular, this plagues clang users on Linux as clang will use the latest
available version of the GNU stdlib by default, meaning most users cannot have
both gcc-4.5 and clang installed without problems.

I have implemented the <iomanip> header in <boost/detail/iomanip.hpp>, under
the boost::detail namespace (to avoid conflicts with system <iomanip> headers
that users/other code might include). The implementation conforms to the C++03
standard (at least, I'm fairly confident it is standard compliant - reviews
and feedback would be welcome). I just committed (r68140) a patch which replaces
the use of <iomanip> with <boost/detail/iomanip.hpp>. I've tested on a few
different compilers, and I'm pretty sure there are no regressions. If it does
cause any problems, please let me know.

This touches a few libraries, all in trivial ways. My apologizes to any
maintainers I may have offended; please feel free to revert the relevant part
of the commit (r68140) if you'd rather not have it in your library.

P.S. For maximum portability, please use <boost/detail/iomanip.hpp> in Boost
code in the future!

- --
Bryce Lelbach aka wash
Version: GnuPG v1.4.9 (GNU/Linux)


Boost list run by bdawes at, gregod at, cpdaniel at, john at