Subject: [boost] the <boost/detail/iomanip.hpp> header (please use it)
From: Bryce Lelbach (admin_at_[hidden])
Date: 2011-01-13 21:53:45
-----BEGIN PGP SIGNED MESSAGE-----
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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
-----END PGP SIGNATURE-----
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk