Boost C++ Libraries Boost C++ Libraries `...one of the most highly regarded and expertly designed C++ library projects in the world.' — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards Version 1.46.0 February 21st, 2011 20:36 GMT New Libraries • Icl: Interval Container Library, interval sets and maps and aggregation of associated values, from Joachim Faulhaber. Updated Libraries • Array: - Added support for cbegin/cend (#4761) - Fixed a problem with the Sun compiler (#4757) • Asio: - Fixed an integer overflow problem that occurs when ip::address_v4::broadcast() is used on 64-bit platforms. - Fixed a problem on older Linux kernels (where epoll is used without timerfd support) that prevents timely delivery of deadline_timer handlers, after the program has been running for some time (#5045). • Bind: - make_adaptable now documented (#4532) • Concept Check: - fixed warnings with self-assignment (#4918) • Filesystem: - Version 3 of the library is now the default. - IBM vacpp: Workaround for compiler bug affecting iterator_facade. (# 4912) - Verify, clarify, document that can be used to specify BOOST_FILESYSTEM_VERSION. (#4891) - Replaced C-style assert with BOOST_ASSERT. - Undeprecated unique_path(). Instead, add a note mentioning the workaround for lack of thread safety and possible change to cwd. unique_path() is just too convenient to deprecate! - Cleared several GCC warnings. - Changed V2 code to use BOOST_THROW_EXCEPTION. - Windows: Fix status() to report non-symlink reparse point correctly. - Add symlink_option to recursive_directory_iterator, allowing control over recursion into directory symlinks. Note that the default is changed to not recurse into directory symlinks. - Reference documentation cleanup, including fixing missing and broken links, and adding missing functions. - Miscellaneous implementation code cleanup. • Fusion: - vector copy constructor now copies sequence members in the same order on different platforms (#2823) • Graph: - Fixed Graphviz output to work on Visual C++ 7.1. - Replaced assert with BOOST_ASSERT. - Changed to Boost.Filesystem v3. - Fixed the following bugs from Trac: #1021, #4556, #4631, #4642, #4715, #4731, #4737, #4753, #4758, #4793, #4843, #4851, #4852, #4887, #4914, # 4966. - Fixed various bugs not in Trac. • Hash: - Support for std::type_index (#4756). - Avoid -Wconversion warnings. • Iostreams: - Use BOOST_ASSERT instead of assert. - Fixed flush regression (#4590). • Iterator: - fixed problem with implicit_cast (#3645) • Math: - Added Wald, Inverse Gaussian and geometric distributions. - Added information about configuration macros. - Added support for mpreal as a real-numered type. • Meta State Machine: - Compile-time state machine analysis. - Boost.Parameter interface definition for msm::back::state_machine<> template arguments. - Possibility to provide a container for the event and deferred event queues. A policy implementation based on a more efficient Boost.CircularBuffer is provided. - msm::back::state_machine<>::is_flag_active method made const. - Added possibility to enqueue events for delayed processing. - Bugfixes ☆ #4926. ☆ stack overflow using the Defer functor ☆ anonymous transition of a submachine not called for the initial state • Optional: - Updated test results with information about expected failures (#2294) • Pool: - Now can set a max_size for pool (#2696) - boost/pool/pool.hpp uses reinterpret_cast instead of static_cast (#2941 ) - boost::pool_allocator now works with vector of vectors (#386) - Boost pool is now compatible with Microsoft memory leak detection (# 4346) • Program Options: - Fixed errors in examples in docs (#3992, #4858) - Now takes argv as const (#3909) • Proto: - Breaking change: boost/proto/core.hpp no longer defines functional::pop_front and functional::reverse, which have moved to their own headers under boost/proto/functional - Add callable wrappers for more Fusion algorithms (including fusion::at); and callable wrappers for some std utilities like make_pair, first and second, all under the new boost/proto/functional directory - Allow transforms to be specified separately from a grammar - proto::matches preserves domain-specific expression wrappers - Fix ADL issue with operator, in proto::and_ transform - Fix handling of grammar checking in expressions involving multiple domains (#4675) - Fix ambiguous operator<< in proto::display_expr (#4910) - fusion::is_sequence answers true for Proto expressions (#5006) - Eliminate -Wundef GCC warning in boost/proto/fusion.hpp (#5075) • Signals: - gcc warning cleanup (#4365) • Spirit: - Spirit V2.4.2, see the 'What's New' section for details. • Tokenizer: - isspace/ispunct was called with wrong character type (#4791) • Unordered: - Avoid using operator& with the value type. - Avoid -Wconversion warnings. • Wave: - See the Changelog for details. Updated Tools • Boostbook: - Better support for attributes on root elements - including lang. • Inspect: - Check that Boost headers do not use C's assert macro. • Quickbook: - Add support for lang attribute in documentation info. - Improved anchors. - Support import, include and xinclude in conditional phrases. - Uses Filesystem 3. Compilers Tested Boost's primary test compilers are: • Linux: - GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.4.5, 4.5.2, - GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.0, 4.5.2 - Intel: 10.1, 11.0, 11.1 - Clang: 2.8 - Pathscale: 3.2. • OS X: - GCC: 4.0.1, 4.2.1, 4.4 - GCC, C++0x mode: 4.4. - Intel: 11.1 • Windows: - Visual C++: 7.1, 8.0, 9.0 and 10.0. - GCC, mingw: 4.4.0. • FreeBSD: - GCC: 4.2.1, 64 bit. Boost's additional test compilers include: • Linux: - GCC: 3.4.6, 4.2.4, 4.3.4, 4.3.5, 4.4.3, 4.4.5, 4.5.0, 4.5.2 - GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.0, 4.5.2 - pgCC 11.1 - Intel: 10.1, 11.0, 11.1 - PathScale: 3.2, 4.0 - Visual Age C++ 10.1 - Clang from subversion • OS X: - Intel C++ Compiler: 10.1, 11.0, 11.1 - GCC: 4.0.1, 4.2.1, 4.4.4 - GCC, C++0x mode: 4.4.4 - Clang from subversion • Windows: - Visual C++: 7.1, 8.0, 9.0, 10.0 - Visual C++ with STLport: 9.0 - Visual C++, Windows Mobile 5, with STLport: 9.0 - GCC, mingw: 4.4.0, 4.5.1, 4.6.0 - GCC, mingw, C++0x mode: 4.5.1 - Borland: 6.1.3 (2009), 6.2.1 (2010) • AIX: - IBM XL C/C++ Enterprise Edition, V11.1.0.0 • FreeBSD: - GCC 4.2.1, 64 bit • Solaris: - Sun C++: 5.10 Acknowledgements Beman Dawes, Eric Niebler, Rene Rivera, Daniel James and Vladimir Prus managed this release.