
AMDG On 1/13/2011 6:53 PM, Bryce Lelbach wrote:
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).
Unfortunately, conforming to the standard isn't good enough. I think you just broke Codegear support in some places. After thinking about this some more, I think this is the wrong solution to the problem. Those who need to use this configuration should add a working iomanip to their compiler's search path. I am in favor of reverting this patch entirely. In Christ, Steven Watanabe