From bf7341000c1e86a66520c12d911de0485252ea91 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 5 Mar 2008 20:37:04 +0000 Subject: [PATCH] Merged revisions 42451-43517 via svnmerge from https://svn.boost.org/svn/boost/trunk ................ r42455 | johnmaddock | 2008-01-04 08:54:35 -0800 (Fri, 04 Jan 2008) | 1 line Fix typos. ................ r42456 | eric_niebler | 2008-01-04 09:14:53 -0800 (Fri, 04 Jan 2008) | 1 line mark up borland and sun accumulators failures ................ r42459 | andreas_huber69 | 2008-01-04 10:23:18 -0800 (Fri, 04 Jan 2008) | 1 line This should fix template parameter shadowing errors for gcc and Intel compilers. ................ r42462 | bgubenko | 2008-01-04 15:55:43 -0800 (Fri, 04 Jan 2008) | 1 line mark Accumulators tests for gcc 4.2.1 affected by GCC Bugzilla Bug 33580 ................ r42471 | turkanis | 2008-01-04 20:51:49 -0800 (Fri, 04 Jan 2008) | 1 line merged changes from iostreams_dev, revisions 42441-42469; added 'std::' for Intel on Linux/Darwin; added STDCXX workaround for codecvt; fixed docs for invert.hpp ................ r42473 | turkanis | 2008-01-04 23:35:44 -0800 (Fri, 04 Jan 2008) | 1 line new iostreams expected failures: stream_offset_64bit_test.cpp on Borland, and wide stream tests on gcc-3.4.2_hpux_pa_risc ................ r42475 | andreas_huber69 | 2008-01-05 04:42:02 -0800 (Sat, 05 Jan 2008) | 1 line Added defaults for in_state_reaction template parameters and updated tests accordingly. ................ r42476 | bemandawes | 2008-01-05 06:41:55 -0800 (Sat, 05 Jan 2008) | 1 line Disable Microsoft "secure" overloads in Dinkumware libraries since they cause compile errors with Intel versions 9 and 10 ................ r42478 | jurko | 2008-01-05 07:19:53 -0800 (Sat, 05 Jan 2008) | 1 line Typo corrections. Minor stylistic changes. ................ r42479 | jurko | 2008-01-05 08:53:03 -0800 (Sat, 05 Jan 2008) | 1 line Updated Boost.Jam command line option texts. Minor stylistic changes. ................ r42480 | jurko | 2008-01-05 08:55:36 -0800 (Sat, 05 Jan 2008) | 1 line Typo corrections. Minor stylistic changes. ................ r42481 | jurko | 2008-01-05 08:56:42 -0800 (Sat, 05 Jan 2008) | 1 line Typo correction. Corrected an invalid command-line option name. ................ r42482 | jurko | 2008-01-05 08:57:17 -0800 (Sat, 05 Jan 2008) | 1 line Corrected an invalid command-line option name reference. ................ r42483 | jurko | 2008-01-05 08:58:01 -0800 (Sat, 05 Jan 2008) | 1 line Corrected an out-of-date comment listing all command-line options. ................ r42484 | jurko | 2008-01-05 09:11:50 -0800 (Sat, 05 Jan 2008) | 1 line Corrected the used file suffix for the VERBATIM file type. Now the documentation is in sync with the 'customization' example. This also closes the Trac ticket 134. Minor stylistic changes. ................ r42485 | jurko | 2008-01-05 09:46:45 -0800 (Sat, 05 Jan 2008) | 1 line Stylistic comment changes & typo corrections. ................ r42486 | jurko | 2008-01-05 09:52:31 -0800 (Sat, 05 Jan 2008) | 1 line Stylistic comment changes & typo corrections in several files. Corrected an incorrect error message in boost-build/build/project.jam displayed when a --build-dir command-line option and a non top-level project build-dir attribute are specified. ................ r42487 | jurko | 2008-01-05 09:54:02 -0800 (Sat, 05 Jan 2008) | 1 line Cleaned up some import rule calls. ................ r42488 | jurko | 2008-01-05 10:02:23 -0800 (Sat, 05 Jan 2008) | 1 line Documentation wording cleaned up a bit. ................ r42489 | jurko | 2008-01-05 10:13:10 -0800 (Sat, 05 Jan 2008) | 1 line Removed or simplified some import calls. Comment updates. Minor stylistic changes. ................ r42490 | jurko | 2008-01-05 10:14:20 -0800 (Sat, 05 Jan 2008) | 2 lines Simplified the used make rules. Removed some dead code. Minor stylistic changes. ................ r42492 | jurko | 2008-01-05 10:29:36 -0800 (Sat, 05 Jan 2008) | 1 line Removed trailing spaces and some empty lines. ................ r42494 | jurko | 2008-01-05 12:02:24 -0800 (Sat, 05 Jan 2008) | 1 line Minor stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, etc. ................ r42495 | jurko | 2008-01-05 12:06:15 -0800 (Sat, 05 Jan 2008) | 2 lines Cleaned up where the stage module is imported in tools/builtin.jam. Added a missing import in tools/stage.jam that causes errors with the previous fix. Minor stylistic changes in tools/stage.jam. ................ r42496 | jurko | 2008-01-05 12:14:48 -0800 (Sat, 05 Jan 2008) | 1 line Comment cleanup. ................ r42497 | jurko | 2008-01-05 12:37:44 -0800 (Sat, 05 Jan 2008) | 1 line Minor stylistic changes - cleaned up import calls, wrapped much text at 80 characters updated comments, typo corrections, removed trailing spaces, etc. ................ r42498 | jurko | 2008-01-05 12:48:50 -0800 (Sat, 05 Jan 2008) | 1 line Renamed some Jamfile and project-root.jam references to Jamfile.jam and Jamroot.jam respectively. ................ r42499 | jurko | 2008-01-05 13:37:15 -0800 (Sat, 05 Jan 2008) | 1 line Test code cleaned up a bit. No functional changes. ................ r42502 | hkaiser | 2008-01-05 14:44:28 -0800 (Sat, 05 Jan 2008) | 1 line Wave: updated copyright messages to include the year 2008 (merged from release branch). ................ r42504 | jurko | 2008-01-05 15:18:17 -0800 (Sat, 05 Jan 2008) | 1 line Refactored the test into two separate test functions. Made the 'directory names with dots' test use the expect_output_line() tool instead of a manual find, causing a better diagnostic to be displayed in case of a failure. Made one of the test Jam scripts more compact. Made the test use the Jamroot.jam file instead of project-root.jam. ................ r42505 | bgubenko | 2008-01-05 15:35:05 -0800 (Sat, 05 Jan 2008) | 1 line mark up accumulators library test weighted_kurtosis for acc toolset ................ r42506 | jurko | 2008-01-05 16:25:48 -0800 (Sat, 05 Jan 2008) | 1 line No functional changes but only stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, removing empty lines, made tests use Jamfile.jam and Jamroot.jam Boost Build script names, removed unnecessary module imports, etc. ................ r42507 | jurko | 2008-01-05 16:53:09 -0800 (Sat, 05 Jan 2008) | 1 line No functional changes but only stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, removing empty lines, removed unnecessary module imports, etc. ................ r42508 | jurko | 2008-01-05 22:15:39 -0800 (Sat, 05 Jan 2008) | 5 lines Refactored build-system.jam. Added many detailed comments. Test configuration module now gets loaded the same as all other configuration modules. In addition to being able to specify which user configuration to load, user may now also prevent loading the user configuration by specifying an empty file name for it. ................ r42509 | jurko | 2008-01-05 22:50:56 -0800 (Sat, 05 Jan 2008) | 1 line Added a --test-config command-line option for specifying where the test configuration file should be loaded from instead of always being looked up in Boost Build's test folder. This allows non-test builds to not use test config when it exists on the system and different tests to use different test configurations when needed. ................ r42510 | jurko | 2008-01-05 22:58:24 -0800 (Sat, 05 Jan 2008) | 1 line Specifying that a build uses test configuration no longer prevents toolset auto-configuration and therefore no longer causes --toolset options to be ignored. ................ r42511 | jurko | 2008-01-05 23:13:28 -0800 (Sat, 05 Jan 2008) | 1 line Minor stylistic comment changes. ................ r42512 | jurko | 2008-01-05 23:17:08 -0800 (Sat, 05 Jan 2008) | 1 line Added support for choosing the toolset and toolset version to be used 'by default' by Boost Build. Allows testing of default toolset functionality. ................ r42513 | jurko | 2008-01-05 23:26:46 -0800 (Sat, 05 Jan 2008) | 1 line Upgraded the tool for testing that a certain line exists in the given output support so that it now also knows how to test that a certain line does not exist in the given output. ................ r42514 | jurko | 2008-01-05 23:28:47 -0800 (Sat, 05 Jan 2008) | 1 line Added the --ignore-site-config option telling Boost.Build not to load the site configuration file. ................ r42516 | jurko | 2008-01-06 00:16:34 -0800 (Sun, 06 Jan 2008) | 1 line Stylistic changes: typo corrections, comment alignments, output string updates, no functional changes, etc. ................ r42527 | andreas_huber69 | 2008-01-06 05:49:31 -0800 (Sun, 06 Jan 2008) | 1 line Various doc updates. ................ r42528 | danieljames | 2008-01-06 08:47:16 -0800 (Sun, 06 Jan 2008) | 2 lines Add Boost.Unordered and add to the documentation. Not fully integrated yet. ................ r42529 | danieljames | 2008-01-06 08:48:36 -0800 (Sun, 06 Jan 2008) | 1 line Add more libraries that use Boost.Hash to its intro. ................ r42530 | danieljames | 2008-01-06 08:49:11 -0800 (Sun, 06 Jan 2008) | 1 line Add Boost.Unordered to Boost.Hash's intro. ................ r42531 | danieljames | 2008-01-06 08:59:18 -0800 (Sun, 06 Jan 2008) | 1 line Combine the 'container' and 'unordered' tests. ................ r42532 | danieljames | 2008-01-06 08:59:49 -0800 (Sun, 06 Jan 2008) | 1 line Give the unordered exception test suite its own name. ................ r42533 | danieljames | 2008-01-06 09:13:15 -0800 (Sun, 06 Jan 2008) | 1 line Add the contents of compile_tests.cpp to set_compile.cpp and map_compile.cpp ................ r42534 | danieljames | 2008-01-06 09:16:51 -0800 (Sun, 06 Jan 2008) | 1 line Rename the test-suites to match other libraries' style. ................ r42535 | danieljames | 2008-01-06 09:23:16 -0800 (Sun, 06 Jan 2008) | 2 lines Add forwarding html files for Boost.Unordered. ................ r42536 | danieljames | 2008-01-06 09:40:32 -0800 (Sun, 06 Jan 2008) | 1 line Add Boost.Unordered to the regression tests. ................ r42537 | eric_niebler | 2008-01-06 09:44:06 -0800 (Sun, 06 Jan 2008) | 1 line add myself as maintainer of accumulators ................ r42538 | danieljames | 2008-01-06 09:45:18 -0800 (Sun, 06 Jan 2008) | 2 lines Add library identification. ................ r42539 | danieljames | 2008-01-06 09:48:11 -0800 (Sun, 06 Jan 2008) | 2 lines Add the unordered library to the maintainers list. ................ r42540 | danieljames | 2008-01-06 09:56:06 -0800 (Sun, 06 Jan 2008) | 2 lines Add unordered to the library list. ................ r42544 | turkanis | 2008-01-06 10:32:05 -0800 (Sun, 06 Jan 2008) | 18 lines copy.hpp: fix for Visual Age: std::min was passed arguments of different types; replaced std:: min with conditional detail/streambuf/indirect_streambuf.hpp: removed trailing comma in enum definition test/combine_test.cpp: test/symmetric_filter_test.cpp: test/compose_test.cpp: test/close_test.cpp: test/invert_test.cpp: test/tee_test.cpp: test/restrict_test.cpp: test/Jamfile.v2: moved tests for close() into the test files for various adapters ................ r42546 | jurko | 2008-01-06 12:06:33 -0800 (Sun, 06 Jan 2008) | 1 line Corrected a bug with the customized default toolset being read from the toolset module but defined in the build-system module. Effect was that customized default toolsets were getting ignored. ................ r42547 | jurko | 2008-01-06 12:37:55 -0800 (Sun, 06 Jan 2008) | 1 line Simple code cleanup. Typo corrections. ................ r42548 | jurko | 2008-01-06 12:43:25 -0800 (Sun, 06 Jan 2008) | 1 line Added support for tests configuring whether they want their Boost Build to ignore toolset requirements instead of always ignoring them. Minor stylistic changes. ................ r42549 | jurko | 2008-01-06 12:56:20 -0800 (Sun, 06 Jan 2008) | 1 line Added new tests related to Boost Build's default toolset handling. They test that the correct default toolset gets use and that when it gets used that has no different status than any other explicitly specified toolset. ................ r42563 | turkanis | 2008-01-06 17:26:52 -0800 (Sun, 06 Jan 2008) | 1 line marked restrict_test.cpp as failing on vacpp and stream_offset_64bit_test as failing on sun (iostreams) ................ r42564 | turkanis | 2008-01-06 17:32:29 -0800 (Sun, 06 Jan 2008) | 1 line alphabetized the iostreams failures ................ r42565 | turkanis | 2008-01-06 21:20:32 -0800 (Sun, 06 Jan 2008) | 5 lines merged changes from branches/iostreams_dev, revisions 42544-42544 - added "slice" as an alias for "restrict", for platforms on which "restrict" is a keyword - attempted to configure file_descriptor for __IBMCPP__ - added better error output to stream_offset_64bit_test.cpp ................ r42566 | jurko | 2008-01-07 09:00:59 -0800 (Mon, 07 Jan 2008) | 1 line Corrected explicitly specified user-config file handling. Was not looking for the specified file in the regular path instead of the current folder and did not work with absolute paths. ................ r42567 | jurko | 2008-01-07 10:15:13 -0800 (Mon, 07 Jan 2008) | 1 line Code cleanup. Converted to using True/False instead of 1/0. Changed to obey documented coding conventions regarding whitespace and function parameters. Renamed private member functions to use the __ name prefix. ................ r42568 | jurko | 2008-01-07 10:38:28 -0800 (Mon, 07 Jan 2008) | 1 line Added a new configuration test making sure that the bug with not being able to process absolute user-config configuration file references never rears its ugly head again. ................ r42570 | eric_niebler | 2008-01-07 11:06:31 -0800 (Mon, 07 Jan 2008) | 1 line s/order/tail/ ................ r42571 | eric_niebler | 2008-01-07 11:08:16 -0800 (Mon, 07 Jan 2008) | 1 line add missing includes, fix signed/unsigned warnings, clean-up trailing whitespace, fixes #1552 ................ r42572 | danieljames | 2008-01-07 11:40:32 -0800 (Mon, 07 Jan 2008) | 1 line Rename the exception tests so that they don't clash with the normal tests. ................ r42573 | danieljames | 2008-01-07 11:41:05 -0800 (Mon, 07 Jan 2008) | 1 line Remove some development code. ................ r42575 | danieljames | 2008-01-07 11:44:13 -0800 (Mon, 07 Jan 2008) | 3 lines Add missing 'use namespace std'. Which I should have done when I was told about them before. Sorry. ................ r42576 | danieljames | 2008-01-07 11:46:27 -0800 (Mon, 07 Jan 2008) | 1 line Add support for multiple copyrights in the library info. ................ r42578 | danieljames | 2008-01-07 11:51:02 -0800 (Mon, 07 Jan 2008) | 1 line Reneame the set and map compile tests so they'll be adjacent in the test results. ................ r42580 | danieljames | 2008-01-07 12:06:15 -0800 (Mon, 07 Jan 2008) | 1 line Avoid some uses of an invalid pointer. ................ r42581 | danieljames | 2008-01-07 12:07:12 -0800 (Mon, 07 Jan 2008) | 1 line Use the default location for the reference documentation. ................ r42587 | danieljames | 2008-01-07 13:05:42 -0800 (Mon, 07 Jan 2008) | 5 lines Fix a bug which was causing the memory area stuff to fail. I should probably try to be less clever and use memory area's lower bounds as the key, and do the extra work required to get that working. ................ r42588 | danieljames | 2008-01-07 13:07:43 -0800 (Mon, 07 Jan 2008) | 1 line Fix an off by one error. ................ r42591 | danieljames | 2008-01-07 13:47:24 -0800 (Mon, 07 Jan 2008) | 1 line Merge in spell check. ................ r42596 | turkanis | 2008-01-07 15:13:26 -0800 (Mon, 07 Jan 2008) | 5 lines merged changes from branches/iostreams_dev, revisions 42565-42595: - Simplified implementation with the help to the C-runtime function _get_osfhandle so that on Windows only a single HANDLE is stored and the POSIX-style implementation is never needed; added the handle_type on POSIX systems (typedef for int) and a function returning the underlying handle as an instance of handle_type - fixed the bug described in ticket Ticket #1551 (stream_buffer::seekpos ignores openmode parameter) - fixed test/operation_sequence_test.cpp file description ................ r42598 | grafik | 2008-01-07 18:49:25 -0800 (Mon, 07 Jan 2008) | 1 line Mostly fix bad path calc for direct html from doxygen doc generation. (fixes #1562) ................ r42600 | turkanis | 2008-01-07 19:49:23 -0800 (Mon, 07 Jan 2008) | 1 line merged changes from branches/iostreams_dev revisions 42595-42599; applied Dinkumware implementation of positioning functions to IBM Visual Age; simplified and corrected implementation ................ r42602 | turkanis | 2008-01-07 20:20:38 -0800 (Mon, 07 Jan 2008) | 1 line removed unneeded headers, one of which (restrict.hpp) causes failures on IBM Visual Age ................ r42603 | turkanis | 2008-01-07 20:52:54 -0800 (Mon, 07 Jan 2008) | 1 line removed spurious '.cpp' extension from test names (iostreams) ................ r42612 | danieljames | 2008-01-08 05:59:01 -0800 (Tue, 08 Jan 2008) | 3 lines Merge in latest unordered developments (revisions 42607-42611). ................ r42613 | jurko | 2008-01-08 06:40:24 -0800 (Tue, 08 Jan 2008) | 1 line Added a new test making sure properties conditioned on multiple different feature values are handled correctly. This especially includes testing the case when one of those features is and the value given for it includes a toolset version. ................ r42614 | jurko | 2008-01-08 07:21:15 -0800 (Tue, 08 Jan 2008) | 1 line Made some debugging messages more consistent. ................ r42615 | eric_niebler | 2008-01-08 09:42:20 -0800 (Tue, 08 Jan 2008) | 1 line support for LaTeX formulas in Doxygen comments ................ r42616 | eric_niebler | 2008-01-08 09:43:34 -0800 (Tue, 08 Jan 2008) | 1 line automatically generate png files from LaTeX formulas using doxygen ................ r42617 | jurko | 2008-01-08 09:51:30 -0800 (Tue, 08 Jan 2008) | 1 line Comment correction. ................ r42619 | danieljames | 2008-01-08 10:15:01 -0800 (Tue, 08 Jan 2008) | 1 line Merge: Another missing 'using namespace std' ................ r42620 | eric_niebler | 2008-01-08 10:43:43 -0800 (Tue, 08 Jan 2008) | 1 line fix signed/unsigned warnings, clean up trailing whitespace ................ r42624 | eric_niebler | 2008-01-08 13:40:52 -0800 (Tue, 08 Jan 2008) | 1 line disable iterator debugging for all msvc versions ................ r42625 | turkanis | 2008-01-08 14:25:01 -0800 (Tue, 08 Jan 2008) | 1 line merged changes from branches/iostreams_dev, revisions 42602-42624: adding missing included to fix #1550; fix for positioning on IBM; fix for file_descriptor on POSIX; restructed the version range for the Borland workaround in large_file_test.cpp ................ r42626 | jurko | 2008-01-08 17:09:26 -0800 (Tue, 08 Jan 2008) | 1 line Minor stylistic code indentation changes. ................ r42627 | jurko | 2008-01-08 17:11:03 -0800 (Tue, 08 Jan 2008) | 1 line Tried trailing spaces. Minor comment typo corrections. ................ r42628 | jurko | 2008-01-08 17:18:38 -0800 (Tue, 08 Jan 2008) | 1 line Remove trailing spaces. Removed an empty line. ................ r42629 | jurko | 2008-01-08 20:05:29 -0800 (Tue, 08 Jan 2008) | 8 lines Updated the __ACTION_RULE__ to not return its action command output as a single string but instead split it into a list of output lines. This allows Jam code using this output to work correctly independently of what newline character combinations are in use. This was causing problems with Boost Build unit tests which can now be updated to pass. Consequences & checks: * Final __ACTION_RULE__ rule parameter has changed from output ? to output-lines *. * Updated corresponding Jam documentation. * Updated the all related Boost Build code. * No code on the Boost trunk uses this rule except for Boost Build itself. ................ r42630 | jurko | 2008-01-08 20:15:35 -0800 (Tue, 08 Jan 2008) | 1 line Fixed a failing test by making it access action output using the __ACTION_RULE__ rule so it would not be affected by the level of debug output given by Boost Build/Jam. ................ r42631 | jurko | 2008-01-08 20:30:25 -0800 (Tue, 08 Jan 2008) | 1 line Fixed a failing test by making it access its action results using the __ACTION_RULE__ rule. Now it works with the default debug level settings (i.e. no action output displayed). ................ r42632 | grafik | 2008-01-08 20:31:58 -0800 (Tue, 08 Jan 2008) | 1 line Revert various changes that break backward compatibility, and also some minor edits. ................ r42633 | grafik | 2008-01-08 20:34:12 -0800 (Tue, 08 Jan 2008) | 1 line Revert various changes that break backward compatibility, and also some minor edits. ................ r42637 | jurko | 2008-01-09 06:36:37 -0800 (Wed, 09 Jan 2008) | 1 line Updated the test so it passes on Windows. Had to change it to enable action output logging and compensate for the fact that now action names are sent to the output as well. Minor stylistic changes. ................ r42639 | jurko | 2008-01-09 09:03:45 -0800 (Wed, 09 Jan 2008) | 1 line Updated the test so it passes on Windows. Had to change it to enable action output logging and compensate for the fact that now action names are sent to the output as well. Minor stylistic changes. ................ r42641 | eric_niebler | 2008-01-09 12:21:51 -0800 (Wed, 09 Jan 2008) | 1 line copy the png files to where fop will look for them when building pdf ................ r42642 | eric_niebler | 2008-01-09 12:33:05 -0800 (Wed, 09 Jan 2008) | 1 line fix more signed/unsigned warnings ................ r42644 | turkanis | 2008-01-09 15:13:57 -0800 (Wed, 09 Jan 2008) | 1 line marked stream_offset_64bit_test as an expected failure on vacpp (iostreams) ................ r42645 | turkanis | 2008-01-09 15:16:17 -0800 (Wed, 09 Jan 2008) | 1 line replaced 2 occurrences of the identifier 'restrict' with BOOST_IOSTREAMS_RESTRICT ................ r42646 | turkanis | 2008-01-09 19:27:51 -0800 (Wed, 09 Jan 2008) | 1 line added expected failures for Sun and IBM; removed a Borland intermittent failure; removed some obsolete toolsets (iostreams) ................ r42647 | troyer | 2008-01-10 01:49:16 -0800 (Thu, 10 Jan 2008) | 1 line Optimizations for Boost.MPI ................ r42648 | troyer | 2008-01-10 03:54:36 -0800 (Thu, 10 Jan 2008) | 1 line Undid backward-compatibility breaking change in pair serialization ................ r42651 | johnmaddock | 2008-01-10 04:10:37 -0800 (Thu, 10 Jan 2008) | 1 line Apply patch from Issue #1187. ................ r42657 | anthonyw | 2008-01-10 06:19:36 -0800 (Thu, 10 Jan 2008) | 1 line removed references to NULL ................ r42658 | turkanis | 2008-01-10 10:50:19 -0800 (Thu, 10 Jan 2008) | 1 line marked up two moe expected failures for sun-5.7-5.8 (iostreams) ................ r42664 | bgubenko | 2008-01-10 13:13:42 -0800 (Thu, 10 Jan 2008) | 1 line marked iostreams library compose_test for gcc-3.4.6_linux_ia64 : linking exceeds 10 min. limit ................ r42665 | danieljames | 2008-01-10 14:25:35 -0800 (Thu, 10 Jan 2008) | 2 lines Initialise svnmerge for merging changes for unordered. ................ r42666 | danieljames | 2008-01-10 14:30:46 -0800 (Thu, 10 Jan 2008) | 6 lines Merge latest unordered developments: Make simple_test test a little more. Use doubles for calculating max load factor. Some workarounds, mostly for Borland and running the tests. ................ r42670 | turkanis | 2008-01-10 16:02:36 -0800 (Thu, 10 Jan 2008) | 1 line merged changes from branches/iostreams_dev, revisions 42645=42660; fix for Intel-darwin; removed dependence of file_descriptor_test and mapped_file_test on library boost_iostreams ................ r42672 | turkanis | 2008-01-10 17:35:46 -0800 (Thu, 10 Jan 2008) | 1 line force static runtime-link for intel-darwin ................ r42674 | johnmaddock | 2008-01-11 01:55:43 -0800 (Fri, 11 Jan 2008) | 1 line Fix bugs reported by Will Drewry: certain invalid regexes can cause the library to access invalid memory, changed to ensure that the correct exception is thrown long before this happens. ................ r42676 | jurko | 2008-01-11 05:44:51 -0800 (Fri, 11 Jan 2008) | 1 line Removed the manual boost-build.jam file creation since that file already exists in the SVN repository and this only overwrote it with the same content minus the copyright notice. Removed a reference to the no longer existing boost_build_v2.html file. ................ r42677 | johnmaddock | 2008-01-11 05:48:57 -0800 (Fri, 11 Jan 2008) | 1 line Update for Intel-10.1. ................ r42684 | turkanis | 2008-01-11 11:12:22 -0800 (Fri, 11 Jan 2008) | 1 line another attempt to fix linking for compression tests on intel-darwin ................ r42688 | turkanis | 2008-01-11 14:58:21 -0800 (Fri, 11 Jan 2008) | 1 line merged changes from iostreams_dev; fixes for IBM and more documentation ................ r42689 | turkanis | 2008-01-11 18:45:55 -0800 (Fri, 11 Jan 2008) | 1 line more detailed note for vacpp (iostreams) ................ r42691 | eric_niebler | 2008-01-11 22:43:28 -0800 (Fri, 11 Jan 2008) | 1 line new style transforms a-la proto v3 ................ r42693 | nesotto | 2008-01-12 04:38:57 -0800 (Sat, 12 Jan 2008) | 1 line doc fixes ................ r42698 | danieljames | 2008-01-12 06:43:40 -0800 (Sat, 12 Jan 2008) | 9 lines Merge the latest unordered changes. These are concerned with getting the tests working on more compilers. The biggest change is that the exception tests have been changed to use a very simple exception testing mechanism on top of lightweight_test. This was because Boost.Test exception testing isn't working on several platforms. I'm trying to set this up so that I can use Boost.Test on compilers which it completely supports, and lightweight test on others. Boost.Test tests more than my simple exception testing code ever will so it's worth using where I can. ................ r42700 | eric_niebler | 2008-01-12 09:09:17 -0800 (Sat, 12 Jan 2008) | 1 line missing includes ................ r42701 | eric_niebler | 2008-01-12 09:40:40 -0800 (Sat, 12 Jan 2008) | 1 line more msvc-7.1-friendly default_context implementation, more missing headers ................ r42706 | turkanis | 2008-01-12 12:19:42 -0800 (Sat, 12 Jan 2008) | 1 line corrected use of feature detection macros for AIX; simplified implementation slightly; updated docs ................ r42707 | turkanis | 2008-01-12 12:20:35 -0800 (Sat, 12 Jan 2008) | 1 line removed intel-darwin sepcific code, since it didn't work ................ r42708 | eric_niebler | 2008-01-12 13:19:45 -0800 (Sat, 12 Jan 2008) | 1 line port toy_spirit example to proto v3 ................ r42713 | turkanis | 2008-01-12 23:17:07 -0800 (Sat, 12 Jan 2008) | 1 line improved docs ................ r42715 | nesotto | 2008-01-13 03:37:41 -0800 (Sun, 13 Jan 2008) | 1 line fixed #if to #ifdef ................ r42722 | bgubenko | 2008-01-13 07:52:12 -0800 (Sun, 13 Jan 2008) | 1 line better note for iostreams library test compose_test on gcc-3.4.6_linux_ia64 ................ r42723 | bgubenko | 2008-01-13 08:12:37 -0800 (Sun, 13 Jan 2008) | 1 line marked up random library test random_test for gcc-3.4.6_linux_ia64 ................ r42724 | danieljames | 2008-01-13 08:19:26 -0800 (Sun, 13 Jan 2008) | 3 lines Merge in latest changes to Boost.Unordered. Some compiler workarounds and starting to clean up the tests a little. ................ r42729 | eric_niebler | 2008-01-13 11:39:54 -0800 (Sun, 13 Jan 2008) | 1 line work around msvc-7.1 bug ................ r42741 | eric_niebler | 2008-01-13 13:56:56 -0800 (Sun, 13 Jan 2008) | 1 line boost template instantiation depth on darwin ................ r42745 | johnmaddock | 2008-01-14 01:46:12 -0800 (Mon, 14 Jan 2008) | 1 line Ooops, fix broken escape sequence. ................ r42747 | johnmaddock | 2008-01-14 01:58:36 -0800 (Mon, 14 Jan 2008) | 1 line Fix documentation typos. ................ r42750 | chris_kohlhoff | 2008-01-14 05:13:35 -0800 (Mon, 14 Jan 2008) | 2 lines Fix concept name in comment. ................ r42751 | johnmaddock | 2008-01-14 05:17:09 -0800 (Mon, 14 Jan 2008) | 1 line Patch regex concept checks and TR1 library to work with VC9 + MS TR1 feature pack. ................ r42752 | chris_kohlhoff | 2008-01-14 05:20:06 -0800 (Mon, 14 Jan 2008) | 2 lines Add missing broken pipe error. ................ r42753 | chris_kohlhoff | 2008-01-14 05:21:37 -0800 (Mon, 14 Jan 2008) | 3 lines Don't include sys/time.h when compiling with aCC, as that header does not supply pselect(), which is needed for HP-UX/aCC to work correctly. ................ r42754 | chris_kohlhoff | 2008-01-14 05:22:21 -0800 (Mon, 14 Jan 2008) | 2 lines Disable noisy and incorrect /Wp64 warnings generated by MSVC. ................ r42755 | chris_kohlhoff | 2008-01-14 05:24:28 -0800 (Mon, 14 Jan 2008) | 3 lines Don't call epoll_wait/kevent if there are no old operations (where old means added prior to the last epoll_wait/kevent call) needing to be demultiplexed. ................ r42756 | chris_kohlhoff | 2008-01-14 05:25:24 -0800 (Mon, 14 Jan 2008) | 2 lines Silence some integer truncation warnings. ................ r42758 | chris_kohlhoff | 2008-01-14 05:27:52 -0800 (Mon, 14 Jan 2008) | 8 lines Silence some integer truncation warnings. Only perform the windows-bug workaround where we use a short timeout with GetQueuedCompletionStatus from one thread, i.e. the timer thread. Keep track of the number of OVERLAPPED-derived operations to ensure that they all get cleaned up when the io_service is destroyed. ................ r42759 | chris_kohlhoff | 2008-01-14 05:29:08 -0800 (Mon, 14 Jan 2008) | 5 lines Check for truncation when converting buffer size from size_t to openssl's int argument. Try to fix possible thread-safety issues in SSL wrapper. ................ r42766 | eric_niebler | 2008-01-14 08:49:32 -0800 (Mon, 14 Jan 2008) | 1 line register mpl::bool_ with typeof ................ r42767 | dgregor | 2008-01-14 09:01:26 -0800 (Mon, 14 Jan 2008) | 1 line Improved suggestion for dealing with Qt MOC, from Niels Dekker ................ r42771 | niels_dekker | 2008-01-14 10:17:30 -0800 (Mon, 14 Jan 2008) | 1 line Documented value_init workaround to compiler issues, added new introduction, updated to 2003 edition of C++ Standard -- reviewed by Fernando Cacciola ................ r42773 | guwi17 | 2008-01-14 11:04:43 -0800 (Mon, 14 Jan 2008) | 2 lines - fixed typo ................ r42776 | eric_niebler | 2008-01-14 12:26:58 -0800 (Mon, 14 Jan 2008) | 1 line add skip(), for specifying a skip regex ................ r42778 | turkanis | 2008-01-14 12:47:17 -0800 (Mon, 14 Jan 2008) | 1 line overhaul of dual_use filters: close() is now called just once; suppressed Borland/Dinkumware warnings in mapped_file.hpp ................ r42779 | niels_dekker | 2008-01-14 13:46:20 -0800 (Mon, 14 Jan 2008) | 1 line Minor "beautifications" of value_init documentation, inc. placing references in order of appearance ................ r42780 | lbourdev | 2008-01-14 14:06:07 -0800 (Mon, 14 Jan 2008) | 3 lines Changed size_t to std::size_t ................ r42781 | lbourdev | 2008-01-14 15:25:10 -0800 (Mon, 14 Jan 2008) | 3 lines GIL: Changing size_t to std::size_t ................ r42788 | eric_niebler | 2008-01-14 22:46:39 -0800 (Mon, 14 Jan 2008) | 1 line code clean-up, begin updating the transform section in proto's docs ................ r42789 | eric_niebler | 2008-01-14 23:46:51 -0800 (Mon, 14 Jan 2008) | 1 line try disabling iterator debugging for intel-win toolset ................ r42797 | t_schwinger | 2008-01-15 11:46:10 -0800 (Tue, 15 Jan 2008) | 3 lines adds missing #include ................ r42798 | niels_dekker | 2008-01-15 11:53:28 -0800 (Tue, 15 Jan 2008) | 1 line value_init doc + test: Added revision date. ................ r42801 | jurko | 2008-01-15 13:13:52 -0800 (Tue, 15 Jan 2008) | 1 line Minor stylistic comment changes. Removed trailing spaces. ................ r42804 | eric_niebler | 2008-01-15 14:06:51 -0800 (Tue, 15 Jan 2008) | 1 line document call<>, make<> and bind<> ................ r42807 | turkanis | 2008-01-15 14:54:40 -0800 (Tue, 15 Jan 2008) | 1 line rewrote treatment of result_of in terms of a new (hopefully temporary) config macro BOOST_IOSTREAMS_NO_RESULT_OF; fixed docs ................ r42811 | turkanis | 2008-01-15 17:14:04 -0800 (Tue, 15 Jan 2008) | 1 line reverted last change except for doc fixes; regression was result of test runner's local patch ................ r42813 | turkanis | 2008-01-15 17:16:36 -0800 (Tue, 15 Jan 2008) | 1 line botched last commit ................ r42814 | djenkins | 2008-01-15 22:39:34 -0800 (Tue, 15 Jan 2008) | 1 line missing include ................ r42815 | niels_dekker | 2008-01-16 01:35:12 -0800 (Wed, 16 Jan 2008) | 1 line Added convenience class initialized_value, as announced at http://article.gmane.org/gmane.comp.lib.boost.devel/169833 ................ r42816 | niels_dekker | 2008-01-16 01:37:25 -0800 (Wed, 16 Jan 2008) | 1 line Added test and documentation for convenience class initialized_value, that was added with changeset [42815] ................ r42817 | chris_kohlhoff | 2008-01-16 05:46:01 -0800 (Wed, 16 Jan 2008) | 2 lines Set the openssl callback function for getting a thread ID. ................ r42818 | anthonyw | 2008-01-16 07:23:36 -0800 (Wed, 16 Jan 2008) | 1 line Provide tss_cleanup_implemented as a dummy function on Windows CE to allow tests to run ................ r42821 | t_schwinger | 2008-01-16 11:16:37 -0800 (Wed, 16 Jan 2008) | 3 lines works around MSVC7.1 problems (hopefully) ................ r42822 | t_schwinger | 2008-01-16 11:17:09 -0800 (Wed, 16 Jan 2008) | 3 lines attempts to fix Borland regressions ................ r42823 | eric_niebler | 2008-01-16 11:24:33 -0800 (Wed, 16 Jan 2008) | 1 line document when<> and is_callable<> ................ r42825 | turkanis | 2008-01-16 12:46:56 -0800 (Wed, 16 Jan 2008) | 1 line replaced __IBMCPP__ with _AIX ................ r42827 | turkanis | 2008-01-16 16:50:14 -0800 (Wed, 16 Jan 2008) | 1 line added pgi to toolsets expected to fail seekawble_file_test (iostreams) ................ r42836 | eric_niebler | 2008-01-17 14:47:54 -0800 (Thu, 17 Jan 2008) | 1 line stl_iterator does better error handling ................ r42837 | jurko | 2008-01-17 17:14:17 -0800 (Thu, 17 Jan 2008) | 1 line Stylistic changes. Removed trailing spaces. Removed empty lines. Corrected comment typos and wording. ................ r42839 | eric_niebler | 2008-01-17 23:56:31 -0800 (Thu, 17 Jan 2008) | 1 line tweaks for better doxygen-ated output ................ r42840 | eric_niebler | 2008-01-17 23:56:59 -0800 (Thu, 17 Jan 2008) | 1 line updated reference section ................ r42841 | eric_niebler | 2008-01-17 23:58:48 -0800 (Thu, 17 Jan 2008) | 1 line add back reference section, document user-defined transforms ................ r42843 | t_schwinger | 2008-01-18 06:37:41 -0800 (Fri, 18 Jan 2008) | 3 lines makes member object support work with BCC ................ r42851 | johnmaddock | 2008-01-18 08:56:57 -0800 (Fri, 18 Jan 2008) | 1 line Add needed include. ................ r42852 | johnmaddock | 2008-01-18 09:05:35 -0800 (Fri, 18 Jan 2008) | 1 line We don't have a tr1::hash functor if the std lib is the Apache version. ................ r42853 | hkaiser | 2008-01-18 09:56:53 -0800 (Fri, 18 Jan 2008) | 1 line Wave: removed T_DEFINED token id from the library. ................ r42855 | johnmaddock | 2008-01-18 10:18:17 -0800 (Fri, 18 Jan 2008) | 1 line Needs to #include in order to use std::memset. ................ r42856 | danieljames | 2008-01-18 11:35:55 -0800 (Fri, 18 Jan 2008) | 2 lines Merge in some changes to the unordered tests. ................ r42857 | t_schwinger | 2008-01-18 12:05:56 -0800 (Fri, 18 Jan 2008) | 3 lines simplifies function_types markup ................ r42858 | t_schwinger | 2008-01-18 12:52:06 -0800 (Fri, 18 Jan 2008) | 3 lines attempts to fix BCB 5.9 regression in synthesis/mem_func_ptr_cv_ptr_to_this test ................ r42859 | t_schwinger | 2008-01-18 13:06:44 -0800 (Fri, 18 Jan 2008) | 3 lines attempts to fix pathscale failure ................ r42868 | niels_dekker | 2008-01-19 12:21:18 -0800 (Sat, 19 Jan 2008) | 1 line value_init_test now works around Borland 5.82 bug ("Error E2015: Ambiguity..." when using initialized_value), that is fixed with a newer compiler version ................ r42869 | niels_dekker | 2008-01-19 12:52:04 -0800 (Sat, 19 Jan 2008) | 1 line Removed local named variable from value_initialized::operator=, as Fernando Cacciola suggested me to avoid unnecessary named variables. ................ r42873 | bemandawes | 2008-01-19 18:01:35 -0800 (Sat, 19 Jan 2008) | 1 line Remove extraneous defines since they are inherited from library build Jamfile ................ r42877 | johnmaddock | 2008-01-20 01:42:35 -0800 (Sun, 20 Jan 2008) | 1 line Add include of for msvc. ................ r42878 | igaztanaga | 2008-01-20 03:54:47 -0800 (Sun, 20 Jan 2008) | 5 lines Updated Interprocess and Intrusive: -> Added linear slist to intrusive -> Updated all allocators to version 2 allocators in Interprocess -> Optimized rbtree_best_fit size overhead to 1 std:size_t. ................ r42881 | danieljames | 2008-01-20 09:37:21 -0800 (Sun, 20 Jan 2008) | 1 line Include to get std::bad_alloc. ................ r42882 | danieljames | 2008-01-20 10:55:57 -0800 (Sun, 20 Jan 2008) | 22 lines Merged revisions 42856-42881 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ........ r42880 | danieljames | 2008-01-20 16:10:43 +0000 (Sun, 20 Jan 2008) | 17 lines Simplify the tests a little: Add a parameter to random_values to control what sort of values it generates. This means that instead of using equivalent_object to test collisions (which was a total hack) we now just need another parameter. This requires some meta programming to act differently for maps and sets. Because of this pairs no longer need to be generated so remove the code for doing that (which doesn't work on some compilers). Remove the generator object, just call generate directly. Remove some of the tests using int containers, they didn't really add to anthing other than the compile time (some tests are timing out). ........ ................ r42884 | jurko | 2008-01-20 12:18:50 -0800 (Sun, 20 Jan 2008) | 5 lines Minor stylistic changes: * Removed trailing spaces. * Added a comment for code discovering the user's home-directories. * Removed a stale regex import. * Removed an old corpse 'identity' rule found inside the __test__ rule. ................ r42890 | johnmaddock | 2008-01-21 01:41:17 -0800 (Mon, 21 Jan 2008) | 1 line Only disable wide character support for HP aCC: for gcc the logic is already taken care of in libstdcpp3.hpp. ................ r42897 | hkaiser | 2008-01-21 08:13:31 -0800 (Mon, 21 Jan 2008) | 1 line Removed a duplicate entry. ................ r42898 | rogeeff | 2008-01-21 09:02:53 -0800 (Mon, 21 Jan 2008) | 1 line changed output of booleans ................ r42899 | johnmaddock | 2008-01-21 10:11:09 -0800 (Mon, 21 Jan 2008) | 1 line Updated type traits library so that everything compiles with -Wall -pedantic with GCC. ................ r42904 | davedeakins | 2008-01-21 11:38:44 -0800 (Mon, 21 Jan 2008) | 1 line Don't include for WinCE (since WinCE does not have this header) ................ r42906 | eric_niebler | 2008-01-21 12:39:35 -0800 (Mon, 21 Jan 2008) | 1 line minor clean-up ................ r42909 | rogeeff | 2008-01-21 19:41:23 -0800 (Mon, 21 Jan 2008) | 1 line missing header ................ r42911 | igaztanaga | 2008-01-22 08:49:22 -0800 (Tue, 22 Jan 2008) | 1 line Refactor some allocation code and fix instantiation problem in 64 bit platforms ................ r42916 | eric_niebler | 2008-01-22 12:42:18 -0800 (Tue, 22 Jan 2008) | 1 line add concepts section to proto reference ................ r42917 | hljin | 2008-01-22 14:10:48 -0800 (Tue, 22 Jan 2008) | 1 line GIL: fixed the problem with std::hex by adding #include ................ r42918 | eric_niebler | 2008-01-22 18:23:15 -0800 (Tue, 22 Jan 2008) | 1 line proto works with boost 1.34.1 ................ r42929 | johnmaddock | 2008-01-23 08:08:44 -0800 (Wed, 23 Jan 2008) | 1 line Applies fix for issue #1598: added missing #include. ................ r42931 | igaztanaga | 2008-01-23 11:34:39 -0800 (Wed, 23 Jan 2008) | 1 line Ticket #1593: [interprocess] 'streamoff' : is not a member of 'std' ................ r42934 | andreas_huber69 | 2008-01-23 13:46:58 -0800 (Wed, 23 Jan 2008) | 1 line Fixes #1594 ................ r42935 | eric_niebler | 2008-01-23 13:57:47 -0800 (Wed, 23 Jan 2008) | 1 line fix dependency issue in Jamfile ................ r42938 | jano_gaspar | 2008-01-23 15:04:57 -0800 (Wed, 23 Jan 2008) | 1 line circular_buffer: updated documentation ................ r42939 | eric_niebler | 2008-01-23 15:25:24 -0800 (Wed, 23 Jan 2008) | 1 line fix quickbook scanner to recognize the [import ...] block ................ r42943 | danieljames | 2008-01-23 15:39:59 -0800 (Wed, 23 Jan 2008) | 60 lines Merged revisions 42882-42941 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ................ r42887 | danieljames | 2008-01-20 21:32:04 +0000 (Sun, 20 Jan 2008) | 10 lines Merged revisions 42590-42664,42667-42697,42699-42723,42725-42855,42857-42881 via svnmerge from https://svn.boost.org/svn/boost/trunk ........ r42881 | danieljames | 2008-01-20 17:37:21 +0000 (Sun, 20 Jan 2008) | 1 line Include to get std::bad_alloc. ........ ................ r42892 | danieljames | 2008-01-21 13:03:16 +0000 (Mon, 21 Jan 2008) | 1 line On some compilers the Rogue Wave/Apache stdcxx library doesn't have the normal std::distance, but instead has a variant that takes the result as the third parameter so it doesn't have to work out the type from the iterator. ................ r42893 | danieljames | 2008-01-21 13:07:58 +0000 (Mon, 21 Jan 2008) | 1 line Fix a typo in the last commit. ................ r42895 | danieljames | 2008-01-21 13:33:29 +0000 (Mon, 21 Jan 2008) | 1 line Remove tabs from the last checkin. ................ r42896 | danieljames | 2008-01-21 15:51:40 +0000 (Mon, 21 Jan 2008) | 1 line Use Boost config to tell when we have a std::distance function. Also, no need for a macro. ................ r42908 | danieljames | 2008-01-21 21:37:04 +0000 (Mon, 21 Jan 2008) | 1 line Use boost::long_long_type and boost::ulong_long_type. ................ r42921 | danieljames | 2008-01-23 11:43:35 +0000 (Wed, 23 Jan 2008) | 1 line Remove some tabs. ................ r42922 | danieljames | 2008-01-23 11:46:28 +0000 (Wed, 23 Jan 2008) | 2 lines Add missing include. Refs #1596 ................ r42923 | danieljames | 2008-01-23 11:52:47 +0000 (Wed, 23 Jan 2008) | 2 lines Always use void const* for the second parameter of allocate. Refs #1596. ................ r42936 | danieljames | 2008-01-23 22:22:16 +0000 (Wed, 23 Jan 2008) | 1 line Use Boost style library name in the documentation. ................ r42937 | danieljames | 2008-01-23 22:22:32 +0000 (Wed, 23 Jan 2008) | 1 line More tabs. ................ r42941 | danieljames | 2008-01-23 23:35:01 +0000 (Wed, 23 Jan 2008) | 1 line Fix all the allocators. ................ ................ r42948 | turkanis | 2008-01-23 22:50:32 -0800 (Wed, 23 Jan 2008) | 1 line merged changes from iostreams_dev, revisions 42825-42947 ................ r42950 | t_schwinger | 2008-01-24 10:56:27 -0800 (Thu, 24 Jan 2008) | 3 lines correctsbroken compiler support for MPL ................ r42951 | eric_niebler | 2008-01-24 13:06:23 -0800 (Thu, 24 Jan 2008) | 1 line peeker optimization looks inside independent sub-expressions ................ r42952 | nesotto | 2008-01-24 14:22:35 -0800 (Thu, 24 Jan 2008) | 1 line test of output iterators ................ r42953 | nesotto | 2008-01-24 14:26:36 -0800 (Thu, 24 Jan 2008) | 1 line output iterator test ................ r42954 | nesotto | 2008-01-24 14:27:27 -0800 (Thu, 24 Jan 2008) | 1 line output iterators for ptr_containers ................ r42957 | t_schwinger | 2008-01-24 16:26:16 -0800 (Thu, 24 Jan 2008) | 3 lines simplifies preprocessing code ................ r42958 | t_schwinger | 2008-01-24 16:28:15 -0800 (Thu, 24 Jan 2008) | 3 lines touched ................ r42960 | noel_belcourt | 2008-01-24 20:41:16 -0800 (Thu, 24 Jan 2008) | 6 lines Changed the -soname and -shared options in intel-darwin.jam to use -dynamiclib and -install_name, as done in darwin.jam. Apparently the Intel compilers on the Mac support the same options as gcc for setting the internal dynamic library name. ................ r42963 | nesotto | 2008-01-24 23:52:14 -0800 (Thu, 24 Jan 2008) | 1 line renaming ... ................ r42964 | nesotto | 2008-01-24 23:52:56 -0800 (Thu, 24 Jan 2008) | 1 line renaming ................ r42965 | nesotto | 2008-01-24 23:54:28 -0800 (Thu, 24 Jan 2008) | 1 line renaming ................ r42970 | turkanis | 2008-01-25 09:56:25 -0800 (Fri, 25 Jan 2008) | 1 line merged changes from iostreams_dev, revisions 42947-42962: fixed tickets 1003, 1139, 1140, 1149 ................ r42971 | noel_belcourt | 2008-01-25 11:52:47 -0800 (Fri, 25 Jan 2008) | 2 lines Fixed a typo to yesterdays patch. ................ r42972 | dgregor | 2008-01-25 13:07:14 -0800 (Fri, 25 Jan 2008) | 2 lines Include to get std::boolalpha. Fixes #1586 ................ r42974 | igaztanaga | 2008-01-25 15:07:51 -0800 (Fri, 25 Jan 2008) | 4 lines 1)Fixed gcc release mode warnings. 2)Replaced throw with BOOST_RETHROW when BOOST_TRY is used. 3)Fixed issues with singly linked lists ................ r42976 | hkaiser | 2008-01-25 17:24:21 -0800 (Fri, 25 Jan 2008) | 2 lines Wave: Fixed a problem in flex_string::compare() (#include_next was non-functional). ................ r42977 | hkaiser | 2008-01-25 17:36:20 -0800 (Fri, 25 Jan 2008) | 1 line Wave: Added new testcase. ................ r42980 | hkaiser | 2008-01-25 17:44:32 -0800 (Fri, 25 Jan 2008) | 1 line Wave: Tweaked new testcase. ................ r42982 | igaztanaga | 2008-01-26 03:52:25 -0800 (Sat, 26 Jan 2008) | 1 line Refactored common slist functions in a single class ................ r42984 | noel_belcourt | 2008-01-26 10:35:59 -0800 (Sat, 26 Jan 2008) | 7 lines Fixes #416 Fixed spelling of Jack Edmonds name and renamed files where necessary. Updated the documentation as well. Tested changes by building/running tests in libs/graph/test. ................ r42985 | noel_belcourt | 2008-01-26 10:51:28 -0800 (Sat, 26 Jan 2008) | 5 lines Fixes #640 Corrected the mpl push_front html documentation. ................ r42986 | eric_niebler | 2008-01-26 11:38:44 -0800 (Sat, 26 Jan 2008) | 1 line optimize repeated searches with patterns that have leading repeats ................ r42987 | t_schwinger | 2008-01-26 13:50:14 -0800 (Sat, 26 Jan 2008) | 3 lines attempts to allow some preprocessing with VACPP (IBM) ................ r42988 | noel_belcourt | 2008-01-26 14:21:57 -0800 (Sat, 26 Jan 2008) | 5 lines Fixes #1539 Fixed typo in the random documentation. ................ r42989 | noel_belcourt | 2008-01-26 15:06:24 -0800 (Sat, 26 Jan 2008) | 6 lines Fixes #965 Patched the XML and will check to ensure the html page reflects this change. ................ r42990 | eric_niebler | 2008-01-26 21:56:46 -0800 (Sat, 26 Jan 2008) | 1 line updated vcproj ................ r42991 | eric_niebler | 2008-01-26 21:57:08 -0800 (Sat, 26 Jan 2008) | 1 line fix typo ................ r42992 | johnmaddock | 2008-01-27 10:43:35 -0800 (Sun, 27 Jan 2008) | 1 line Extended leading repeat optimization to more cases. ................ r42997 | vladimir_prus | 2008-01-28 09:59:27 -0800 (Mon, 28 Jan 2008) | 1 line Correct speliing of --build-dir in --help output ................ r43000 | eric_niebler | 2008-01-28 12:03:41 -0800 (Mon, 28 Jan 2008) | 1 line update acknowledgement of john maddock ................ r43001 | bgubenko | 2008-01-28 13:27:13 -0800 (Mon, 28 Jan 2008) | 1 line marked 2 asio library tests for gcc-4.2.1_hpux_ia64 (HP-UX 11.23 with gcc) ................ r43002 | eric_niebler | 2008-01-28 14:55:30 -0800 (Mon, 28 Jan 2008) | 1 line doc more concepts, misc clean-up ................ r43003 | eric_niebler | 2008-01-28 14:56:46 -0800 (Mon, 28 Jan 2008) | 1 line proto doxygen comments, misc clean-up ................ r43006 | eric_niebler | 2008-01-28 18:20:45 -0800 (Mon, 28 Jan 2008) | 1 line more proto doxygen comments, update copyright ................ r43007 | vladimir_prus | 2008-01-28 22:28:09 -0800 (Mon, 28 Jan 2008) | 1 line Retain top-level boost-build.jam ................ r43008 | vladimir_prus | 2008-01-28 22:40:06 -0800 (Mon, 28 Jan 2008) | 4 lines Disable relinking when is either windows or cygwin. Fixes #1062. ................ r43009 | eric_niebler | 2008-01-28 23:03:03 -0800 (Mon, 28 Jan 2008) | 1 line add tests for deep_copy, make_expr, unpack_expr; fix bugs; update more copyrights ................ r43012 | djenkins | 2008-01-29 08:41:12 -0800 (Tue, 29 Jan 2008) | 1 line fix typo ................ r43013 | djenkins | 2008-01-29 08:43:51 -0800 (Tue, 29 Jan 2008) | 1 line update copyright and misc cleanup ................ r43014 | bgubenko | 2008-01-29 09:47:01 -0800 (Tue, 29 Jan 2008) | 1 line marked interprocess library unusable on gcc-4.2.1_hpux_ia64 (until it is ported to HP-UX platform) ................ r43016 | eric_niebler | 2008-01-29 13:02:52 -0800 (Tue, 29 Jan 2008) | 1 line make_expr and unpack_expr improvements, fix scary transform::arg_c bug ................ r43018 | djenkins | 2008-01-29 19:39:02 -0800 (Tue, 29 Jan 2008) | 1 line use skip directive to simplify example ................ r43023 | eric_niebler | 2008-01-30 14:10:13 -0800 (Wed, 30 Jan 2008) | 1 line finally, a make_expr() I can live with ................ r43024 | eric_niebler | 2008-01-30 14:26:34 -0800 (Wed, 30 Jan 2008) | 1 line regenerated boostbook reference ................ r43025 | niels_dekker | 2008-01-30 14:42:23 -0800 (Wed, 30 Jan 2008) | 1 line value_init: Removed aligned_storage::address() calls, to improve TR1 compatibility, as confirmed by John Maddock. Added internal helper function, wrapper_address(), as discussed with Fernando. ................ r43026 | eric_niebler | 2008-01-30 15:03:36 -0800 (Wed, 30 Jan 2008) | 1 line minor tweak to make_expr result_of return type calculation ................ r43031 | eric_niebler | 2008-01-30 23:36:28 -0800 (Wed, 30 Jan 2008) | 1 line simplify make_expr.hpp, user docs for make_expr() ................ r43035 | eric_niebler | 2008-01-31 10:44:17 -0800 (Thu, 31 Jan 2008) | 1 line minor tweak to fusion value_of and value_at for expressions, for better interop with proto::unpack_expr ................ r43037 | vladimir_prus | 2008-01-31 11:47:12 -0800 (Thu, 31 Jan 2008) | 1 line Build in MT mode (as long as wave links to boost.thread) ................ r43038 | hkaiser | 2008-01-31 12:57:47 -0800 (Thu, 31 Jan 2008) | 1 line Wave: fixed expanding_function_like_macro() ................ r43040 | eric_niebler | 2008-01-31 13:12:44 -0800 (Thu, 31 Jan 2008) | 1 line finish documentation for expression construction utilities ................ r43041 | hkaiser | 2008-01-31 14:33:43 -0800 (Thu, 31 Jan 2008) | 1 line Wave: Added additional configuration possibility to allow control threading support. ................ r43042 | hkaiser | 2008-01-31 14:48:56 -0800 (Thu, 31 Jan 2008) | 1 line Wave: Added additional configuration possibility to allow control threading support. Updated the documentation. ................ r43043 | jurko | 2008-01-31 16:27:31 -0800 (Thu, 31 Jan 2008) | 1 line Reverted changes made in rev 43038 which seem to have been committed by mistake and include some user specific settings in it local to the comitter's environment while this file is intended to be used as generic template for actual user-config.jam files and do nothing in case user does not specify his own settings there. ................ r43044 | jurko | 2008-01-31 16:44:23 -0800 (Thu, 31 Jan 2008) | 1 line Minor stylistic spacing changes. Remove trailing spaces. ................ r43045 | jurko | 2008-01-31 16:46:50 -0800 (Thu, 31 Jan 2008) | 1 line Corrected outputting native Windows paths so that it works correctly for absolute paths without the drive letter being explicitly specified, e.g. \aaa\bbb or /aaa/bbb. ................ r43046 | jurko | 2008-01-31 17:49:16 -0800 (Thu, 31 Jan 2008) | 1 line Added the missing end-of-line character when outputting DEBUG_SEARCH debug messages from file_build1(). This cleans up the -d+6 bjam output a lot. ................ r43050 | eric_niebler | 2008-02-01 12:30:29 -0800 (Fri, 01 Feb 2008) | 1 line add future group example ................ r43052 | noel_belcourt | 2008-02-01 18:41:23 -0800 (Fri, 01 Feb 2008) | 4 lines Fix a typo in pgi.jam that prevented shared libraries from being built correctly. ................ r43054 | chris_kohlhoff | 2008-02-02 03:37:45 -0800 (Sat, 02 Feb 2008) | 4 lines Ensure that the workaround for the MSVC secure iterator problem is only used when compiling with MSVC. The workaround causes g++'s library debug mode to report errors due to the assignment from a singular iterator. ................ r43055 | chris_kohlhoff | 2008-02-02 03:39:17 -0800 (Sat, 02 Feb 2008) | 2 lines Fix "possible loss of data" warning when building for Windows 2000 targets. ................ r43056 | chris_kohlhoff | 2008-02-02 04:02:23 -0800 (Sat, 02 Feb 2008) | 3 lines The latest Windows SDKs don't support IPv6 when building for Windows 2000, so we need to use the SDK emulation in that case. ................ r43057 | eric_niebler | 2008-02-02 04:27:16 -0800 (Sat, 02 Feb 2008) | 1 line port test to boost version 1.34.1 ................ r43061 | turkanis | 2008-02-02 14:10:46 -0800 (Sat, 02 Feb 2008) | 1 line merged changes from iostreams_dev, revisions 42962-43059: updated copyright notices ................ r43080 | eric_niebler | 2008-02-03 10:40:03 -0800 (Sun, 03 Feb 2008) | 1 line fix bug found by L. Evans re: fusion and stateful function objects ................ r43083 | johnmaddock | 2008-02-04 01:13:36 -0800 (Mon, 04 Feb 2008) | 1 line Added missing file. ................ r43085 | johnmaddock | 2008-02-04 01:17:35 -0800 (Mon, 04 Feb 2008) | 1 line Removed dead file. ................ r43087 | johnmaddock | 2008-02-04 01:20:46 -0800 (Mon, 04 Feb 2008) | 1 line Removed dead files. ................ r43089 | johnmaddock | 2008-02-04 01:23:28 -0800 (Mon, 04 Feb 2008) | 1 line Removed dead files. ................ r43094 | anthonyw | 2008-02-04 05:16:32 -0800 (Mon, 04 Feb 2008) | 1 line added test for duration overloads of timed_lock, and added missing implementation to win32 version ................ r43101 | hkaiser | 2008-02-04 11:21:46 -0800 (Mon, 04 Feb 2008) | 1 line Wave: trying to fix stdcxx_gcc regression. ................ r43103 | matias | 2008-02-04 13:01:06 -0800 (Mon, 04 Feb 2008) | 1 line hooking --> additional information in html docs ................ r43106 | eric_niebler | 2008-02-04 18:09:51 -0800 (Mon, 04 Feb 2008) | 1 line fleshing out evaluation.qbk, document transforms of if_, not_, and_ and or_ ................ r43107 | eric_niebler | 2008-02-04 21:33:12 -0800 (Mon, 04 Feb 2008) | 1 line eliminate warnings under msvc's -W4 ................ r43111 | eric_niebler | 2008-02-04 22:03:01 -0800 (Mon, 04 Feb 2008) | 1 line fix typo ................ r43112 | marshall | 2008-02-05 08:07:19 -0800 (Tue, 05 Feb 2008) | 1 line Fix typo (bug #1434) ................ r43113 | marshall | 2008-02-05 08:15:35 -0800 (Tue, 05 Feb 2008) | 1 line Applied patch (fixes bug #1307) ................ r43117 | dgregor | 2008-02-05 12:51:23 -0800 (Tue, 05 Feb 2008) | 1 line Fix add_vertex and add_vertices when the CSR graph has vertex properties ................ r43118 | danieljames | 2008-02-05 12:57:02 -0800 (Tue, 05 Feb 2008) | 13 lines Merged revisions 42942-43116 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk ........ r42975 | danieljames | 2008-01-26 00:29:32 +0000 (Sat, 26 Jan 2008) | 1 line Typedef some types before using them, to make life easier for Borland. ........ r43116 | danieljames | 2008-02-05 20:47:44 +0000 (Tue, 05 Feb 2008) | 1 line Some compilers and libraries combinations have problems with deques of non-assingable types. Using a list instead. ........ ................ r43120 | eric_niebler | 2008-02-05 13:07:31 -0800 (Tue, 05 Feb 2008) | 1 line add missing #include ................ r43121 | bemandawes | 2008-02-05 18:01:46 -0800 (Tue, 05 Feb 2008) | 1 line Add circular_buffer to the alphabetic list ................ r43125 | t_schwinger | 2008-02-06 05:00:08 -0800 (Wed, 06 Feb 2008) | 3 lines attempts to make synthesis metafunctions work with sun compiler ................ r43129 | danieljames | 2008-02-06 11:02:38 -0800 (Wed, 06 Feb 2008) | 2 lines In the boostbook navbar, link FAQ and people to the website. ................ r43130 | eric_niebler | 2008-02-06 11:57:51 -0800 (Wed, 06 Feb 2008) | 1 line untabify ................ r43132 | nesotto | 2008-02-06 14:46:19 -0800 (Wed, 06 Feb 2008) | 1 line cleanup to pass inspection report ................ r43133 | nesotto | 2008-02-06 14:46:31 -0800 (Wed, 06 Feb 2008) | 1 line cleanup to pass inspection report ................ r43134 | eric_niebler | 2008-02-06 14:57:57 -0800 (Wed, 06 Feb 2008) | 1 line add handy get() accessors on literal<> wrapper ................ r43135 | nesotto | 2008-02-06 15:12:21 -0800 (Wed, 06 Feb 2008) | 1 line cleanup to pass inspection tool ................ r43136 | eric_niebler | 2008-02-06 16:05:01 -0800 (Wed, 06 Feb 2008) | 1 line reasonably complete user docs for expression evaluation ................ r43138 | eric_niebler | 2008-02-07 00:06:29 -0800 (Thu, 07 Feb 2008) | 1 line tweaks for doxygen 1.5.4, document matches<> ................ r43141 | johnmaddock | 2008-02-07 01:55:41 -0800 (Thu, 07 Feb 2008) | 1 line Fix last checked version. ................ r43143 | johnmaddock | 2008-02-07 02:03:16 -0800 (Thu, 07 Feb 2008) | 1 line Remove tabs. ................ r43145 | johnmaddock | 2008-02-07 02:13:31 -0800 (Thu, 07 Feb 2008) | 1 line Fix min/max usage violation. ................ r43147 | vladimir_prus | 2008-02-07 02:17:03 -0800 (Thu, 07 Feb 2008) | 2 lines Attempt to unbreak ................ r43148 | johnmaddock | 2008-02-07 02:24:29 -0800 (Thu, 07 Feb 2008) | 1 line Added comment to suppress inspect warning. ................ r43150 | johnmaddock | 2008-02-07 02:29:59 -0800 (Thu, 07 Feb 2008) | 1 line Added fix for inspection report. ................ r43152 | vladimir_prus | 2008-02-07 03:04:30 -0800 (Thu, 07 Feb 2008) | 4 lines Fix with no path. Patch from Jon Olsson. ................ r43154 | bemandawes | 2008-02-07 05:22:34 -0800 (Thu, 07 Feb 2008) | 1 line Remove obsolete CVS scripts, add 1.35.0 SVN scripts, beginning of docs page ................ r43155 | nesotto | 2008-02-07 06:41:04 -0800 (Thu, 07 Feb 2008) | 6 lines iterator_range disables msvc warning 4996 [range] sub_range assignment issue ................ r43156 | nesotto | 2008-02-07 06:46:19 -0800 (Thu, 07 Feb 2008) | 1 line test ................ r43157 | joaquin | 2008-02-07 08:29:27 -0800 (Thu, 07 Feb 2008) | 1 line updated according to latest regression tests results, fixed a broken link, typo ................ r43159 | turkanis | 2008-02-07 09:07:28 -0800 (Thu, 07 Feb 2008) | 1 line added missing 'self.' qualification ................ r43165 | dgregor | 2008-02-07 13:08:09 -0800 (Thu, 07 Feb 2008) | 1 line Support for non-blocking MPI operations in Python, from Andreas Kloeckner ................ r43166 | dgregor | 2008-02-07 13:09:38 -0800 (Thu, 07 Feb 2008) | 1 line Note addition of nonblocking operations to the Python interface ................ r43171 | nesotto | 2008-02-08 01:58:35 -0800 (Fri, 08 Feb 2008) | 1 line silence of warnings for unused arguments ................ r43175 | nesotto | 2008-02-08 07:25:01 -0800 (Fri, 08 Feb 2008) | 1 line missing ) fixed ................ r43176 | noel_belcourt | 2008-02-08 08:32:35 -0800 (Fri, 08 Feb 2008) | 14 lines Force PPC Darwin to use fork instead of vfork. This change requires both the parent and child process to explicitly set the process group id. Vfork guarantees the child process runs to the exec before it releases the parent process. Now that we use fork instead of vfork, it's possible for the parent to wait on the child process without having the child setpgid on itself. This eliminates spurious hangs on ppc darwin caused by either a race condition between vfork and execvp, or a bug in the vfork implementation. Added a test to ensure we don't try to read from the stderr pipe descriptor if the descriptor's not valid. ................ r43177 | eric_niebler | 2008-02-08 09:11:57 -0800 (Fri, 08 Feb 2008) | 1 line reserve some c_type bits for dinkumware on windows, fixes #1625 ................ r43179 | noel_belcourt | 2008-02-08 09:53:50 -0800 (Fri, 08 Feb 2008) | 13 lines I've added the -single_module option to the intel-darwin.link.dll action to fix this linker error when linking dylibs: ld: common symbols not allowed with MH_DYLIB output format with the -multi_module option boost/bin.v2/libs/system/build/intel-darwin-9.1/debug/macosx-version-10.4/error_code.o definition of common __ZGVZNK5boost6system14error_category7messageEiE1s (size 16) boost/bin.v2/libs/system/build/intel-darwin-9.1/debug/macosx-version-10.4/error_code.o definition of common __ZZNK5boost6system14error_category7messageEiE1s (size 16) though I would note that the common symbols problem occurs in a number of other libraries (test, graph, spirit, ...) as well. ................ r43188 | danieljames | 2008-02-09 04:29:02 -0800 (Sat, 09 Feb 2008) | 2 lines Fix a link in the intrusive redirect. ................ r43189 | danieljames | 2008-02-09 04:37:00 -0800 (Sat, 09 Feb 2008) | 1 line Fix another redirect link. ................ r43190 | danieljames | 2008-02-09 04:38:19 -0800 (Sat, 09 Feb 2008) | 1 line Update link to Jamfile, to link to the version 2 jamfile. ................ r43191 | danieljames | 2008-02-09 04:39:06 -0800 (Sat, 09 Feb 2008) | 1 line Fix a link. ................ r43192 | danieljames | 2008-02-09 04:45:32 -0800 (Sat, 09 Feb 2008) | 2 lines Add a forwarding header for hash/custom.html as Boost.Bimap links to it. ................ r43193 | danieljames | 2008-02-09 05:02:45 -0800 (Sat, 09 Feb 2008) | 1 line Fix the link to the license. ................ r43199 | eric_niebler | 2008-02-09 12:32:27 -0800 (Sat, 09 Feb 2008) | 1 line more doxygen comments, const-correctness tweak for fusion::at() on proto expression ................ r43200 | eric_niebler | 2008-02-09 12:34:33 -0800 (Sat, 09 Feb 2008) | 1 line document how to access children of proto expressions ................ r43204 | eric_niebler | 2008-02-09 22:57:24 -0800 (Sat, 09 Feb 2008) | 1 line fix oops in proto fusion interface ................ r43205 | eric_niebler | 2008-02-09 23:02:54 -0800 (Sat, 09 Feb 2008) | 1 line suppress msvc warning ................ r43206 | danieljames | 2008-02-10 01:55:03 -0800 (Sun, 10 Feb 2008) | 1 line Fix some broken links. ................ r43207 | vladimir_prus | 2008-02-10 05:13:41 -0800 (Sun, 10 Feb 2008) | 4 lines Tolerate argc being zero. Patch from C. K. Jester-Young. ................ r43209 | danieljames | 2008-02-10 06:56:22 -0800 (Sun, 10 Feb 2008) | 1 line Link to people pages on the website, as they've been removed from the download. ................ r43210 | danieljames | 2008-02-10 07:02:17 -0800 (Sun, 10 Feb 2008) | 1 line Point links to the pages that used to be in 'more' to the site. ................ r43212 | danieljames | 2008-02-10 08:10:16 -0800 (Sun, 10 Feb 2008) | 1 line Fix links on the home page as well. ................ r43213 | danieljames | 2008-02-10 08:21:22 -0800 (Sun, 10 Feb 2008) | 1 line Generated documentation which is no longer generated. ................ r43220 | eric_niebler | 2008-02-10 19:48:41 -0800 (Sun, 10 Feb 2008) | 1 line include config.hpp and workaround.hpp before uses of BOOST_WORKAROUND and BOOST_MSVC ................ r43221 | chris_kohlhoff | 2008-02-11 05:59:44 -0800 (Mon, 11 Feb 2008) | 2 lines Need to define _XOPEN_SOURCE_EXTENDED when compiling for HP-UX. ................ r43226 | djenkins | 2008-02-11 12:49:19 -0800 (Mon, 11 Feb 2008) | 1 line cleanup using local<> and skip() ................ r43239 | turkanis | 2008-02-12 21:43:39 -0800 (Tue, 12 Feb 2008) | 1 line fixed return value of read(), to correctly handle eof ................ r43240 | turkanis | 2008-02-12 21:47:44 -0800 (Tue, 12 Feb 2008) | 1 line merged changes from iostreams_dev, revisions 43059-43238: better debug output for mapped file; fixed large_file_test.cpp under UNICODE on Windows ................ r43241 | turkanis | 2008-02-13 11:38:52 -0800 (Wed, 13 Feb 2008) | 1 line added markup for stdcxx failures (iostreams) ................ r43243 | turkanis | 2008-02-13 11:42:10 -0800 (Wed, 13 Feb 2008) | 1 line switched from to , for stdcxx (which is conforming in this case) ................ r43246 | matias | 2008-02-14 09:33:12 -0800 (Thu, 14 Feb 2008) | 1 line remove local admonitions ................ r43247 | matias | 2008-02-14 09:43:52 -0800 (Thu, 14 Feb 2008) | 1 line optional docs fixes ................ r43248 | matias | 2008-02-14 09:44:21 -0800 (Thu, 14 Feb 2008) | 1 line redirect optional docs to new version ................ r43251 | matias | 2008-02-14 10:08:16 -0800 (Thu, 14 Feb 2008) | 1 line conversion docs fixes ................ r43252 | matias | 2008-02-14 10:09:34 -0800 (Thu, 14 Feb 2008) | 1 line redirect to new conversion docs ................ r43253 | matias | 2008-02-14 10:19:34 -0800 (Thu, 14 Feb 2008) | 1 line redirect optional and numeric/conversion docs to new version ................ r43254 | matias | 2008-02-14 11:03:55 -0800 (Thu, 14 Feb 2008) | 1 line bimap doc fixes ................ r43255 | matias | 2008-02-14 11:05:04 -0800 (Thu, 14 Feb 2008) | 1 line fix tabs in files ................ r43256 | matias | 2008-02-14 11:22:15 -0800 (Thu, 14 Feb 2008) | 1 line fix tabs in files ................ r43260 | matias | 2008-02-14 13:24:11 -0800 (Thu, 14 Feb 2008) | 1 line add missing images ................ r43262 | hkaiser | 2008-02-14 14:01:54 -0800 (Thu, 14 Feb 2008) | 1 line Fixed a whitespace insertion glitch, where whitespace got inserted unconditionally between two operators even if one of these was a comma. ................ r43264 | hkaiser | 2008-02-14 15:52:33 -0800 (Thu, 14 Feb 2008) | 1 line Wave: More fixes to whitespace insertion engine. ................ r43266 | hkaiser | 2008-02-15 06:35:36 -0800 (Fri, 15 Feb 2008) | 1 line Wave: More fixes to whitespace insertion engine. ................ r43269 | pdimov | 2008-02-15 10:40:36 -0800 (Fri, 15 Feb 2008) | 1 line Added support for &&, || ................ r43272 | andreas_huber69 | 2008-02-16 02:13:08 -0800 (Sat, 16 Feb 2008) | 1 line Updated statechart markup ................ r43274 | andreas_huber69 | 2008-02-16 02:19:49 -0800 (Sat, 16 Feb 2008) | 2 lines Silenced GCC 4.0.1 warning (patch supplied by Euan) ................ r43280 | jurko | 2008-02-16 08:50:42 -0800 (Sat, 16 Feb 2008) | 1 line Corrected comments related to the allowed linker & linker-type values. Minor stylistic changes. ................ r43281 | jurko | 2008-02-16 08:53:33 -0800 (Sat, 16 Feb 2008) | 1 line Added support for compiling C++ programs without RTTI support using the gcc toolset. ................ r43282 | jurko | 2008-02-16 09:03:54 -0800 (Sat, 16 Feb 2008) | 1 line Made the msvc toolset always explicitly enable or disable rtti support based on the feature value instead of only setting it if on and depending on it being disabled by default. The original behaviour did not work well with msvc 8.0 for which there was not way to disable rtti support as that compiler enables rtti support by default. ................ r43283 | bemandawes | 2008-02-16 18:01:32 -0800 (Sat, 16 Feb 2008) | 1 line Show output of example program ................ r43290 | hkaiser | 2008-02-17 08:45:08 -0800 (Sun, 17 Feb 2008) | 1 line Wave: Extended a workaround to newest Intel compiler version (Linux V10.1) ................ r43292 | nesotto | 2008-02-17 08:49:38 -0800 (Sun, 17 Feb 2008) | 1 line support for comparinson operators ................ r43293 | nesotto | 2008-02-17 08:50:02 -0800 (Sun, 17 Feb 2008) | 1 line support for comparison operators ................ r43294 | hkaiser | 2008-02-17 09:00:20 -0800 (Sun, 17 Feb 2008) | 1 line Wave: Fixed test cases to reflect recent changes to whitespace insertion. ................ r43296 | eric_niebler | 2008-02-17 12:53:18 -0800 (Sun, 17 Feb 2008) | 1 line proto documentation improvements ................ r43299 | turkanis | 2008-02-17 21:48:13 -0800 (Sun, 17 Feb 2008) | 1 line merged changes from iostreams_dev, revisions 43243-43298: overhaul of category_of and close(): stringstream is now dual_seekable; standard file streams and string streams are closable; public Boost.Iostreams streams and streambufs are closable; close() pops filtering streams and streambufs ................ r43300 | eric_niebler | 2008-02-17 22:16:27 -0800 (Sun, 17 Feb 2008) | 1 line remove dependence on boost.lambda, make numeric function objects work with std binders ................ r43301 | chris_kohlhoff | 2008-02-18 05:31:26 -0800 (Mon, 18 Feb 2008) | 2 lines Fix printing of error messages. ................ r43302 | chris_kohlhoff | 2008-02-18 05:33:23 -0800 (Mon, 18 Feb 2008) | 2 lines Only define _XOPEN_SOURCE_EXTENDED when building with gcc on HP-UX. ................ r43303 | chris_kohlhoff | 2008-02-18 05:35:15 -0800 (Mon, 18 Feb 2008) | 3 lines Add missing #include of socket_types.hpp needed for the SSL unit tests to compile successfully on Windows. ................ r43306 | eric_niebler | 2008-02-18 10:29:29 -0800 (Mon, 18 Feb 2008) | 1 line remove post_construct docs, fix link to boost.parameter library ................ r43308 | niels_dekker | 2008-02-18 14:11:19 -0800 (Mon, 18 Feb 2008) | 1 line Fixed the assignment of value_initialized for T being a C-style array. (The previous version would trigger a compile error in this case.) ................ r43309 | niels_dekker | 2008-02-18 14:13:21 -0800 (Mon, 18 Feb 2008) | 1 line Tested the assignment of value_initialized, for T being a C-style array. Related to the fix of changeset [43308] ................ r43310 | eric_niebler | 2008-02-18 15:03:23 -0800 (Mon, 18 Feb 2008) | 1 line some doxygen comments for proto/traits.hpp ................ r43311 | eric_niebler | 2008-02-18 21:56:52 -0800 (Mon, 18 Feb 2008) | 1 line more proto documentation tweaks, remove unnecessary result_of::arg_c instantiation ................ r43312 | eric_niebler | 2008-02-18 23:14:37 -0800 (Mon, 18 Feb 2008) | 1 line fix droppable accumulators ................ r43314 | eric_niebler | 2008-02-18 23:33:30 -0800 (Mon, 18 Feb 2008) | 1 line darn, back out bad droppable changes ................ r43316 | pdimov | 2008-02-19 05:18:58 -0800 (Tue, 19 Feb 2008) | 1 line Fixes #1590. ................ r43317 | pdimov | 2008-02-19 06:01:13 -0800 (Tue, 19 Feb 2008) | 1 line Fixes #1444. ................ r43318 | pdimov | 2008-02-19 06:26:36 -0800 (Tue, 19 Feb 2008) | 1 line Fix #398, as long as the macros BOOST_NO_STD_TYPEINFO and BOOST_NO_IOSTREAM are defined. I don't know how Boost.Config needs to be changed to autodetect eVC4 and set these on its own. ................ r43319 | pdimov | 2008-02-19 06:51:10 -0800 (Tue, 19 Feb 2008) | 1 line Fix #1641. ................ r43320 | pdimov | 2008-02-19 06:59:28 -0800 (Tue, 19 Feb 2008) | 1 line Fix #1646. ................ r43321 | pdimov | 2008-02-19 07:09:10 -0800 (Tue, 19 Feb 2008) | 1 line Fix #1642. ................ r43322 | nesotto | 2008-02-19 07:10:05 -0800 (Tue, 19 Feb 2008) | 1 line fixed problem with operator()() when the value_type was abstract. ................ r43323 | pdimov | 2008-02-19 07:40:58 -0800 (Tue, 19 Feb 2008) | 1 line Fix #1643. ................ r43325 | turkanis | 2008-02-19 11:34:07 -0800 (Tue, 19 Feb 2008) | 1 line stringstreams are no longer closable; the semantics of close() for these devices was illconsidered ................ r43328 | turkanis | 2008-02-19 16:09:06 -0800 (Tue, 19 Feb 2008) | 1 line menu fix from iostreams_dev ................ r43329 | turkanis | 2008-02-19 19:20:17 -0800 (Tue, 19 Feb 2008) | 1 line markup for pgi-7.0 (iostreams) ................ r43330 | bemandawes | 2008-02-20 05:46:49 -0800 (Wed, 20 Feb 2008) | 1 line Add .z7 archive generation ................ r43332 | grafik | 2008-02-20 09:32:09 -0800 (Wed, 20 Feb 2008) | 1 line New readme page for now standalone release. ................ r43334 | grafik | 2008-02-20 11:15:16 -0800 (Wed, 20 Feb 2008) | 1 line Fix link to getting started docs. ................ r43335 | grafik | 2008-02-20 14:50:03 -0800 (Wed, 20 Feb 2008) | 1 line Add the to all requirements to allow other toolsets to use the currently configured python instead of relying on python being in the path. ................ r43336 | grafik | 2008-02-20 15:01:43 -0800 (Wed, 20 Feb 2008) | 1 line Use the configured python interpreter instead of assuming it's in the path. ................ r43337 | grafik | 2008-02-20 15:03:28 -0800 (Wed, 20 Feb 2008) | 1 line Add missing, and assumed, white background for screen rendering. ................ r43338 | grafik | 2008-02-20 15:26:58 -0800 (Wed, 20 Feb 2008) | 1 line Doc cleanups. ................ r43344 | eric_niebler | 2008-02-20 23:18:24 -0800 (Wed, 20 Feb 2008) | 1 line More Proto documentation ................ r43346 | johnmaddock | 2008-02-21 02:37:59 -0800 (Thu, 21 Feb 2008) | 3 lines Fix typo in example. Added links to PDF versions of the docs. Regenerated all the docs to fix people links. ................ r43347 | johnmaddock | 2008-02-21 03:53:59 -0800 (Thu, 21 Feb 2008) | 1 line Update main overview page. ................ r43349 | bemandawes | 2008-02-21 04:46:11 -0800 (Thu, 21 Feb 2008) | 1 line Fix typo; .z7 should be .7z ................ r43351 | johnmaddock | 2008-02-21 04:58:15 -0800 (Thu, 21 Feb 2008) | 1 line Added link to PDF docs, and regenerated. ................ r43354 | johnmaddock | 2008-02-21 05:51:18 -0800 (Thu, 21 Feb 2008) | 1 line Added link to PDF docs, and regenerated. ................ r43357 | johnmaddock | 2008-02-21 08:49:59 -0800 (Thu, 21 Feb 2008) | 1 line Added link to PDF docs. ................ r43359 | johnmaddock | 2008-02-21 09:01:26 -0800 (Thu, 21 Feb 2008) | 1 line Regenerated docs to fix links. ................ r43361 | bemandawes | 2008-02-21 12:11:32 -0800 (Thu, 21 Feb 2008) | 1 line Fix still another typo ................ r43362 | eric_niebler | 2008-02-21 12:12:02 -0800 (Thu, 21 Feb 2008) | 1 line doxygen comments for proto::when<> ................ r43363 | eric_niebler | 2008-02-21 16:42:12 -0800 (Thu, 21 Feb 2008) | 1 line fix crash when actions are in keep() expressions ................ r43364 | eric_niebler | 2008-02-21 18:01:46 -0800 (Thu, 21 Feb 2008) | 1 line doxygen comments ................ r43365 | grafik | 2008-02-21 21:26:39 -0800 (Thu, 21 Feb 2008) | 1 line Rename readme.html to index.html, and add forwarding index.htm for backward compatibility. ................ r43368 | danieljames | 2008-02-22 01:21:22 -0800 (Fri, 22 Feb 2008) | 2 lines Update the index.html link in the navbar. ................ r43371 | grafik | 2008-02-22 08:25:21 -0800 (Fri, 22 Feb 2008) | 1 line Remove obsolete getting started files. They where replaced by more/getting_started/*. ................ r43377 | chris_kohlhoff | 2008-02-22 14:43:54 -0800 (Fri, 22 Feb 2008) | 2 lines Use the correct vector of timer queues when dispatching timers. ................ r43390 | turkanis | 2008-02-22 16:05:49 -0800 (Fri, 22 Feb 2008) | 2 lines Ported change from iostreams_dev ................ r43391 | turkanis | 2008-02-22 16:06:24 -0800 (Fri, 22 Feb 2008) | 2 lines Ported changes from iostreams_dev ................ r43392 | turkanis | 2008-02-22 16:07:13 -0800 (Fri, 22 Feb 2008) | 1 line merged changes from iostreams_dev, revisions 43327-43389 ................ r43393 | turkanis | 2008-02-22 16:11:07 -0800 (Fri, 22 Feb 2008) | 1 line merged changes from iostreams_dev ................ r43395 | turkanis | 2008-02-22 22:07:59 -0800 (Fri, 22 Feb 2008) | 1 line updated to test close() on filtering streambufs ................ r43399 | turkanis | 2008-02-22 23:44:58 -0800 (Fri, 22 Feb 2008) | 1 line merged changes from iostreams_dev ................ r43402 | bemandawes | 2008-02-23 06:04:02 -0800 (Sat, 23 Feb 2008) | 1 line Give the 1st and 2nd level index.html files a common look-and-feel. ................ r43405 | vladimir_prus | 2008-02-24 04:59:04 -0800 (Sun, 24 Feb 2008) | 3 lines Recognize that fact, for that for intel-win, matters and should be added to the library name. ................ r43409 | bemandawes | 2008-02-24 16:53:26 -0800 (Sun, 24 Feb 2008) | 1 line Fix html boo boo ................ r43410 | schoepflin | 2008-02-25 00:37:10 -0800 (Mon, 25 Feb 2008) | 1 line Added missing template keyword. ................ r43411 | t_schwinger | 2008-02-25 03:45:51 -0800 (Mon, 25 Feb 2008) | 3 lines removes unnecessary escaping ................ r43412 | t_schwinger | 2008-02-25 03:47:59 -0800 (Mon, 25 Feb 2008) | 3 lines removes unnecessary comment ................ r43416 | hkaiser | 2008-02-26 11:25:05 -0800 (Tue, 26 Feb 2008) | 1 line Wave: Fixed expanding_function_like_macro preprocessing hook. ................ r43417 | danieljames | 2008-02-26 14:04:55 -0800 (Tue, 26 Feb 2008) | 2 lines Fix a link to Boost.Bimap. ................ r43418 | danieljames | 2008-02-26 14:07:25 -0800 (Tue, 26 Feb 2008) | 2 lines Change another link that's no longer in the repository to link to the website. ................ r43419 | hkaiser | 2008-02-26 14:36:36 -0800 (Tue, 26 Feb 2008) | 1 line Fixed a compilation problem on pathscale ................ r43421 | eric_niebler | 2008-02-27 10:48:22 -0800 (Wed, 27 Feb 2008) | 1 line partially revert breaking change to independent sub-expressions until I can make a proper fix ................ r43422 | danieljames | 2008-02-27 10:51:14 -0800 (Wed, 27 Feb 2008) | 1 line Fix broken copyright urls. Fixes #1573. ................ r43423 | danieljames | 2008-02-27 11:22:01 -0800 (Wed, 27 Feb 2008) | 1 line Fix incorrect links to copyright of the form 'http:#www.boost.org ................ r43424 | eric_niebler | 2008-02-27 11:39:43 -0800 (Wed, 27 Feb 2008) | 1 line fix bug in use_simple_repeat calculation ................ r43428 | eric_niebler | 2008-02-27 16:03:15 -0800 (Wed, 27 Feb 2008) | 1 line add test case for use_simple_repeat fix ................ r43433 | eric_niebler | 2008-02-28 14:47:12 -0800 (Thu, 28 Feb 2008) | 1 line fix oops ................ r43434 | johnmaddock | 2008-02-29 01:49:42 -0800 (Fri, 29 Feb 2008) | 1 line Apply fixes to issue #1658 which fixes some broken URL's. ................ r43435 | johnmaddock | 2008-02-29 01:58:30 -0800 (Fri, 29 Feb 2008) | 1 line Fix broken link as per report #1658. ................ r43437 | chris_kohlhoff | 2008-02-29 04:57:57 -0800 (Fri, 29 Feb 2008) | 2 lines Add missing tie(). ................ r43438 | schoepflin | 2008-02-29 07:13:41 -0800 (Fri, 29 Feb 2008) | 2 lines Added expected failure markup for the test weighted_tail_variate_means on Tru64/CXX. ................ r43441 | eric_niebler | 2008-03-01 11:32:56 -0800 (Sat, 01 Mar 2008) | 1 line add map_assign example ................ r43458 | turkanis | 2008-03-02 22:20:14 -0800 (Sun, 02 Mar 2008) | 1 line merged changes from iostreams_dev, revisions 43399-43457 ................ r43461 | anthonyw | 2008-03-03 00:44:42 -0800 (Mon, 03 Mar 2008) | 1 line Test and fix for issue #1665 ................ r43464 | anthonyw | 2008-03-03 02:52:44 -0800 (Mon, 03 Mar 2008) | 1 line thread constructor now accepts up to three additional arguments to pass to thread function ................ r43467 | danieljames | 2008-03-03 04:10:35 -0800 (Mon, 03 Mar 2008) | 2 lines Tell subversion that date_time.doc is a text file, not a word document. ................ r43468 | danieljames | 2008-03-03 04:11:25 -0800 (Mon, 03 Mar 2008) | 1 line Fix license link in date_time.doc ................ r43469 | chris_kohlhoff | 2008-03-03 05:21:05 -0800 (Mon, 03 Mar 2008) | 4 lines Disable use of CancelIo by default, due to the possibility of silent failure on some system configurations. Swallow error returned by CancelIoEx if there are no operations to be cancelled. ................ r43470 | chris_kohlhoff | 2008-03-03 05:27:06 -0800 (Mon, 03 Mar 2008) | 2 lines Add missing 'boost_' prefix to helper namespace. ................ r43471 | chris_kohlhoff | 2008-03-03 05:36:35 -0800 (Mon, 03 Mar 2008) | 2 lines Regenerate documentation. ................ r43472 | chris_kohlhoff | 2008-03-03 06:05:35 -0800 (Mon, 03 Mar 2008) | 1 line Update copyright notices. ................ r43473 | chris_kohlhoff | 2008-03-03 06:13:01 -0800 (Mon, 03 Mar 2008) | 2 lines Update copyright notices. ................ r43476 | eric_niebler | 2008-03-03 11:44:54 -0800 (Mon, 03 Mar 2008) | 1 line add Map Assign example to documentation ................ r43478 | eric_niebler | 2008-03-03 11:47:47 -0800 (Mon, 03 Mar 2008) | 1 line second attempt at fixing actions in independent expressions ................ r43484 | eric_niebler | 2008-03-03 15:48:17 -0800 (Mon, 03 Mar 2008) | 1 line handle static regexes with actions nested in dynamic independent subexpressions ................ r43485 | emildotchevski | 2008-03-03 17:41:17 -0800 (Mon, 03 Mar 2008) | 1 line boost exception ................ r43496 | eric_niebler | 2008-03-04 10:51:07 -0800 (Tue, 04 Mar 2008) | 1 line rename numeric::empty to numeric::default_, fixes #1650 ................ r43501 | eric_niebler | 2008-03-04 11:31:57 -0800 (Tue, 04 Mar 2008) | 1 line eliminate msvc level 4 warnings, fixes #1631 ................ r43502 | eric_niebler | 2008-03-04 11:42:36 -0800 (Tue, 04 Mar 2008) | 1 line add Dave Jenkin's evil static/dynamic actions in keep test case ................ r43503 | eric_niebler | 2008-03-04 13:09:47 -0800 (Tue, 04 Mar 2008) | 1 line work around msvc bug 331418, fixes #1652 ................ r43506 | eric_niebler | 2008-03-04 15:01:17 -0800 (Tue, 04 Mar 2008) | 1 line fix bad interaction between boyer-moore optimization and partial match feature, fixes #1564 ................ r43508 | eric_niebler | 2008-03-04 22:32:39 -0800 (Tue, 04 Mar 2008) | 1 line add BOOST_REVERSE_FOREACH, fixes #1071 ................ r43509 | eric_niebler | 2008-03-04 23:12:03 -0800 (Tue, 04 Mar 2008) | 1 line fix bug iterating over abstract base ................ [SVN r43519] --- doc/Jamfile.v2 | 6 +- .../a_note_about_optional_bool_.html | 26 +- doc/html/boost_optional/acknowledgments.html | 30 +- .../dependencies_and_portability.html | 26 +- .../boost_optional/detailed_semantics.html | 74 +- doc/html/boost_optional/development.html | 45 +- doc/html/boost_optional/examples.html | 26 +- .../exception_safety_guarantees.html | 28 +- .../boost_optional/implementation_notes.html | 26 +- .../boost_optional/in_place_factories.html | 26 +- .../boost_optional/optional_references.html | 26 +- ...for_assignment_of_optional_references.html | 28 +- doc/html/boost_optional/synopsis.html | 26 +- .../boost_optional/type_requirements.html | 26 +- doc/html/images/callouts/1.png | Bin 391 -> 0 bytes doc/html/images/callouts/10.png | Bin 485 -> 0 bytes doc/html/images/callouts/11.png | Bin 410 -> 0 bytes doc/html/images/callouts/12.png | Bin 488 -> 0 bytes doc/html/images/callouts/13.png | Bin 509 -> 0 bytes doc/html/images/callouts/14.png | Bin 499 -> 0 bytes doc/html/images/callouts/15.png | Bin 507 -> 0 bytes doc/html/images/callouts/2.png | Bin 446 -> 0 bytes doc/html/images/callouts/3.png | Bin 431 -> 0 bytes doc/html/images/callouts/4.png | Bin 441 -> 0 bytes doc/html/images/callouts/5.png | Bin 423 -> 0 bytes doc/html/images/callouts/6.png | Bin 431 -> 0 bytes doc/html/images/callouts/7.png | Bin 397 -> 0 bytes doc/html/images/callouts/8.png | Bin 434 -> 0 bytes doc/html/images/callouts/9.png | Bin 420 -> 0 bytes doc/html/images/caution.png | Bin 4286 -> 0 bytes doc/html/images/home.png | Bin 1105 -> 0 bytes doc/html/images/important.png | Bin 4666 -> 0 bytes doc/html/images/next.png | Bin 768 -> 0 bytes doc/html/images/note.png | Bin 4648 -> 0 bytes doc/html/images/prev.png | Bin 741 -> 0 bytes doc/html/images/tip.png | Bin 3902 -> 0 bytes doc/html/images/up.png | Bin 766 -> 0 bytes doc/html/images/warning.png | Bin 3927 -> 0 bytes doc/html/index.html | 41 +- doc/optional.html | 1803 ----------------- doc/optional.qbk | 5 - doc/reference.qbk | 1 + index.html | 6 +- 43 files changed, 268 insertions(+), 2007 deletions(-) delete mode 100644 doc/html/images/callouts/1.png delete mode 100644 doc/html/images/callouts/10.png delete mode 100644 doc/html/images/callouts/11.png delete mode 100644 doc/html/images/callouts/12.png delete mode 100644 doc/html/images/callouts/13.png delete mode 100644 doc/html/images/callouts/14.png delete mode 100644 doc/html/images/callouts/15.png delete mode 100644 doc/html/images/callouts/2.png delete mode 100644 doc/html/images/callouts/3.png delete mode 100644 doc/html/images/callouts/4.png delete mode 100644 doc/html/images/callouts/5.png delete mode 100644 doc/html/images/callouts/6.png delete mode 100644 doc/html/images/callouts/7.png delete mode 100644 doc/html/images/callouts/8.png delete mode 100644 doc/html/images/callouts/9.png delete mode 100755 doc/html/images/caution.png delete mode 100755 doc/html/images/home.png delete mode 100755 doc/html/images/important.png delete mode 100755 doc/html/images/next.png delete mode 100755 doc/html/images/note.png delete mode 100755 doc/html/images/prev.png delete mode 100755 doc/html/images/tip.png delete mode 100755 doc/html/images/up.png delete mode 100755 doc/html/images/warning.png delete mode 100644 doc/optional.html diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 95574ce..abdaf20 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -21,8 +21,10 @@ boostbook standalone : optional : - toc.max.depth=1 - toc.section.depth=1 + boost.root=../../../.. + boost.libraries=../../../libraries.htm + toc.max.depth=2 + toc.section.depth=2 chunk.section.depth=1 ; diff --git a/doc/html/boost_optional/a_note_about_optional_bool_.html b/doc/html/boost_optional/a_note_about_optional_bool_.html index 42d69df..5191d1d 100644 --- a/doc/html/boost_optional/a_note_about_optional_bool_.html +++ b/doc/html/boost_optional/a_note_about_optional_bool_.html @@ -12,17 +12,17 @@ Guarantees"> - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -74,11 +74,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/acknowledgments.html b/doc/html/boost_optional/acknowledgments.html index e2cc05a..09e3c71 100644 --- a/doc/html/boost_optional/acknowledgments.html +++ b/doc/html/boost_optional/acknowledgments.html @@ -10,24 +10,24 @@ and Portability"> - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHome +PrevUpHome

- + Pre-formal review

@@ -66,7 +66,7 @@

- + Post-formal review

@@ -112,11 +112,15 @@
- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHome +PrevUpHome
diff --git a/doc/html/boost_optional/dependencies_and_portability.html b/doc/html/boost_optional/dependencies_and_portability.html index ccc0d2c..35ecb80 100644 --- a/doc/html/boost_optional/dependencies_and_portability.html +++ b/doc/html/boost_optional/dependencies_and_portability.html @@ -11,17 +11,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -36,11 +36,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/detailed_semantics.html b/doc/html/boost_optional/detailed_semantics.html index bbebfd7..ef68023 100644 --- a/doc/html/boost_optional/detailed_semantics.html +++ b/doc/html/boost_optional/detailed_semantics.html @@ -10,17 +10,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -29,36 +29,42 @@

Because T might be of reference type, in the sequel, those entries whose semantic depends on T being of reference type or not will be - distinguished using the following convention: * If the entry reads: optional<T(not a ref)>, the description corresponds only to the - case where T is not of reference - type. * If the entry reads: optional<T&>, - the description corresponds only to the case where T - is of reference type. * If the entry reads: optional<T>, - the description is the same for both cases. + distinguished using the following convention:

+
    +
  • + If the entry reads: optional<T(not + a ref)>, the description + corresponds only to the case where T + is not of reference type. +
  • +
  • + If the entry reads: optional<T&>, + the description corresponds only to the case where T + is of reference type. +
  • +
  • + If the entry reads: optional<T>, + the description is the same for both cases. +
  • +
- + - +
[Note][Note] Note
-

-

-

- The following section contains various assert() which are used only to show the postconditions - as sample code. It is not implied that the type T - must support each particular expression but that if the expression is supported, - the implied condition holds. -

-

-

-

+ The following section contains various assert() which are used only to show the postconditions + as sample code. It is not implied that the type T + must support each particular expression but that if the expression is supported, + the implied condition holds. +

space

- + optional class member functions

@@ -1334,7 +1340,7 @@ space

- + Free functions

@@ -1693,11 +1699,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/development.html b/doc/html/boost_optional/development.html index c013432..8d58d8b 100644 --- a/doc/html/boost_optional/development.html +++ b/doc/html/boost_optional/development.html @@ -10,17 +10,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -292,7 +292,7 @@ itself which are supported by a special interface.

- + Lexically-hinted Value Access in the presence of possibly untitialized optional objects: The operators * and -> @@ -357,7 +357,7 @@ incarnated by pointers.

- + Optional<T> as a model of OptionalPointee
@@ -369,19 +369,12 @@

- + - +
[Warning][Warning] Warning
-

-

-

- However, it is particularly important to note that optional<> objects are not pointers. optional<> is not, and does not model, a - pointer. -

-

-

-

+ However, it is particularly important to note that optional<> objects are not pointers. optional<> is not, and does not model, a pointer. +

For instance, optional<> @@ -405,11 +398,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/examples.html b/doc/html/boost_optional/examples.html index 7fdb8c8..7685a73 100644 --- a/doc/html/boost_optional/examples.html +++ b/doc/html/boost_optional/examples.html @@ -10,17 +10,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -141,11 +141,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/exception_safety_guarantees.html b/doc/html/boost_optional/exception_safety_guarantees.html index 6b4ab64..8f6504f 100644 --- a/doc/html/boost_optional/exception_safety_guarantees.html +++ b/doc/html/boost_optional/exception_safety_guarantees.html @@ -12,17 +12,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -116,7 +116,7 @@ }

- + Swap

@@ -130,11 +130,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/implementation_notes.html b/doc/html/boost_optional/implementation_notes.html index 54af9ab..c0225b3 100644 --- a/doc/html/boost_optional/implementation_notes.html +++ b/doc/html/boost_optional/implementation_notes.html @@ -11,17 +11,17 @@ and Portability"> - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -42,11 +42,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/in_place_factories.html b/doc/html/boost_optional/in_place_factories.html index be2ccbf..a972384 100644 --- a/doc/html/boost_optional/in_place_factories.html +++ b/doc/html/boost_optional/in_place_factories.html @@ -12,17 +12,17 @@ optional<bool>"> - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -190,11 +190,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/optional_references.html b/doc/html/boost_optional/optional_references.html index 396dff0..1222a42 100644 --- a/doc/html/boost_optional/optional_references.html +++ b/doc/html/boost_optional/optional_references.html @@ -11,17 +11,17 @@ semantics for assignment of optional references"> - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -72,11 +72,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/rebinding_semantics_for_assignment_of_optional_references.html b/doc/html/boost_optional/rebinding_semantics_for_assignment_of_optional_references.html index 8906812..5b894aa 100644 --- a/doc/html/boost_optional/rebinding_semantics_for_assignment_of_optional_references.html +++ b/doc/html/boost_optional/rebinding_semantics_for_assignment_of_optional_references.html @@ -11,17 +11,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -75,7 +75,7 @@ assert(b==3);

- + Rationale

@@ -141,11 +141,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/synopsis.html b/doc/html/boost_optional/synopsis.html index 198750e..c128fc6 100644 --- a/doc/html/boost_optional/synopsis.html +++ b/doc/html/boost_optional/synopsis.html @@ -10,17 +10,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -137,11 +137,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_optional/type_requirements.html b/doc/html/boost_optional/type_requirements.html index 8da1a86..0676bf1 100644 --- a/doc/html/boost_optional/type_requirements.html +++ b/doc/html/boost_optional/type_requirements.html @@ -11,17 +11,17 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

@@ -40,11 +40,15 @@

- +
Copyright © 2003 -2007 Fernando Luis Cacciola Carballal

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/images/callouts/1.png b/doc/html/images/callouts/1.png deleted file mode 100644 index 6003ad3af44ecde89a963d5af6a4180217319dfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`*F|>EaktF{gKeVcsDJ z0oVU;*6~a;Smx2ZrsEQ?ZxM&ygvBnFE?nmtg94rky>!~x8m)3j$<^(USQPg)>&zq; zMi;kRX=V2=&tIr>`d!)XyUpL@9=UmHetuZ+!_#HmOU>-J$pS3-bN!ardIyAF-G1#? z>&)f7E`k#|4sWoP;JM|(l6I_WZ`%~1y>agujE%b%?TB9+mb}(fsxyPFgQGMy*=%;A z(aZyu>`GQPiY$*T-1gu1pAwY3_N%b5cB#xoiRPn8jf*q{Trb|_a%sui&dtzin6_r? zu}%d~p(mAmOGTO#c2u;xJ(}Y^?ex>t7XL(?7U+1p1hOa|ab;w%c)sCoo@_(^WX<=s zr#89B91nl^w~jx#=XQ?S<*?OXYm`>JmO9g8;`^U+STt2<{M7jt yFTo&UT%Db3I{*CoWB+`guig6oxB?on>HF_suX>mE-_|+p)}_VbyG%XWRxDs!Bbdb`rSkCf z_opQpQ)e&z9?Q3;X^2drllMU70&71c8CwuJm{abIp zeHPuYNTZJ3@x#oHxOW1*hRe1@t$mhYkYRMp!NudU$f{L`HtEbcpPpkT-Q%WwW82?% zC04fVjt$l>J1E5m&cv;Mo-ym249h`b!OT;yI|^kU z7g#)~+Iz@=rzNo?Z+rL2lqSFB&0ni{FPmfwyfr;gD5K)Z38R1FYejhuGSfQP|hTIvQJ?m5M8zE|_KJ2Ny0Fm1o>%kU%6J0MhalaBNL z`|XP~Ht29?&a!*3EqAew_mM&!z3HdD7hn7l!t9~x=u!|XzH8m#&o*bC7c(?GuT1E< zIxY74U)KBI?en(Zj`8vg@_IC9@{~!dRw-$!in=2h%i uo%h^T#Pz@K#3`Fjeg5EaktF{gFX#;)5A z0&V{%irr-ME}D3(<3UjG?A^;f=DTxNc8JvRJ?~omN$9208L_ft0gE{24F|>2&Q_(X zyZRk}S@Y!IJLwtuX$cuSW9kad-E9>}+B4ar@B8JKU&IA}ZdvzvdHazWz|5Z1g ze)`Eh`){a=Ty&?>q6`CxFY1#$=XWS5S;+8pJeF8|am8VmFNNE0pWSjTLp3m4UCF?B z)v7}^cJ1H)wSBfZUSXp*CCGT~*L1 z!O^woK;8cKATG~IcM5iAPD}l8PyF`VZ_(}ou7b0cInG+vv8ev~-ZX{}_a4{SRWsNx zp57$DG;5jTyyy8w3^D7&C6fPqtf+bOwJP3cC`GVy&NA$7e!FZ3*ZX_(gMKMn{jgqg*t>n5-mVwdc+LxmI|e9UlrZu5 zQ({_ROHtjRNV$1z%lk=bT+YJ`-QVnLY|jT_oBf)`qRPnx(gN%Xx|4tEMdaVwoi3 z8lgAcLau*<4)^ratatOor+TqI{wNVS?clathJwW!uZ)j$%&5q+Ew{P&-MZ_q|3(_ifRH$!b{%@XfPPgvO) wR!x~yId8sr_tEzopr0G&e8k^lez diff --git a/doc/html/images/callouts/13.png b/doc/html/images/callouts/13.png deleted file mode 100644 index 5b41e02a670f020ae62b7854482c4ba1980d73cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`%IK)5S5QVovKN`}4B` zMA$w&XL9s;aOlF(1%)YvneO4jm-o(&U;MKD#e?Mq8+>b)^R3G((>5$`ILflv=tsMT zqri^uWh?XJrteF)Ir(#L@uYSZ#}5m2PWL-;h`yh)YSr?%_21hCg6ylJ<~^TZ68k@M z*0PUs0U}2m4Zrz%{ru!$;?!{|$E-JRd$xd+!qOu@YuZ+=+K?-K{IOu7#Gy?(C029K zJuHwgKK8+3O1mEi<8zsP?~|?OE?SqZ;@R}Hh*OcJN#Q`=cIVYsi%fl`jgRf~&@_Gf zwzE(sdH3B%ReKL@(z)}#{LAm!8Ou74CNVNBn8MT`ef;AL!#4E;rLlAT)H7zW#a>U8 zU^AP|o3>d}=J>$`0|rHwDM43C-@g0)`~9hChd_}fnOvtgEzsbyc%HHSwnVR+$0Qaf z4hDzV>nAp?Vf*l#Q@}~VH~7Z3-c_p%=AWOKD!ECAd8tU(q6Mq8jughk>rJ2Tw)o@M zm#pV3mrVI!!@p|Pp+XrSHQ@j+Lm56tj!LO-Hu>!LzuT|B{(4Tap5^mRI^HKOr#o>( zhECmcH*b>$SLC#%J&RUEtqrq3WKa^{tg=+3a-Mjg$X|1pImHv7|6G6l?EhE#0)GDv Vq@B#jVqjok@O1TaS?83{1OO3{4iFg+V~@k_l_W_wBcH zWmp*BaqNHHW9Xsz@VDKv%bG0$2|bO5Z6>~kGkrGPetRKrdu;6W&)@+-S^-5e@qWpx=%~ppu-*HbtcU?B((KtQse2TO*ZEl8Jswt zRO&J4%x73CvPq};vBd=w-op^F6<=oH98=hD0fB5^~^0#Ht9-5wBo~e$L z1lS(@e{k6MP=#(Q)65P&Df1-{87Bltt+Mf&((ZAvc!Ef@>!Js&9H9b5iNOkrjBYL6 zJ*_!sB>iV?h@ACiit<@=<+J)R*K4P%cxw9w^X5-kmdSp5TRo@ZmA&eVHGWMv{dC`S zuce2g9b}I0mp%UT(3$h)E?kO6N0T-NtiR6f#9?6EcU;-Tw>eSb#{2IdZ1@=hR$sjr zzyA8Z#}+%3XYST(VGvBTnww-G;h@R7RHW^&qTY1wDM1E2%vZCnP73-ad;I5-GeP_8 zE`G0F6Q(`qeEN%Bd`m@QuDc4b82Acr%ROx3%dny5{(I}bX7&S{bY%G0Jv1kte!3xU z{l(W`FJx^snCW9M|9s%ekN~~u3#V){n|<~=yTas?3Ovp)cJVPNC~di&>!GEaktF{gFH!7eFB zfwuoy?SYP89?67Uc^u>7$ueKD;_TuU8yCKP?%y^nk6}6Q`Xb ztf|`>GH3mp6jYb?>^RdSfr%@^R!^go|6uIuQi$NDW>upBo%&=x}fma9VINW5Ly|Qkmm3JvHr(Hb1rr&)I%k zqW}1XsO0Up4@Uid#O=~jwU>`!u0>yZkk=jF7J(OKyBQi3I1HqEAMAR!+FC^5{Aa5( zf1b8B8nUgv%H`5>GKER;h_=JWcU60(815ha{H$oF%dBM*eC_{b&TZl;l$m|{>8A+2 z>GpSd7ik$I?GB%onzMHA^lP*F zk0)=tnX|7g@rLFCKI7=6AyTdvVl+z`(%Z>FVdQ I&MBb@0M`i8D*ylh diff --git a/doc/html/images/callouts/3.png b/doc/html/images/callouts/3.png deleted file mode 100644 index 3ff0a93931515bb97a045dfa61a8530d87e458fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`$7M>EaktF{gFH*{(+p zB5wOOu6l7m)8 z=-oKUH}V^&iJyB|uo8LF()AHB5)-MfO`N3nt zvX}OXM~sd8*9*0GtV!A!kzpdmy4F;zn{|?kqeR<^5G@5I1_ong&q>Sg=9!B)JHv7pU)=hauMINB3;oaL&ye>}mU!H{id4Bxig=9%^>^=*s?64R8I`k2o? pd-p8Ef~{sjr?y8+Fx+F*x_2OD_kw447#J8BJYD@<);T3K0RY@Tw*mkF diff --git a/doc/html/images/callouts/4.png b/doc/html/images/callouts/4.png deleted file mode 100644 index 6aa29fc0b48c17aa6ce5540e1af5c00510c33ff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`)qx>EaktF{gFH#x5mC zfwup%GG$o)=ergqP)_hu?Cbmc-FuV6=PTSkE z?z;W`K`XyJWKnY38^_LI-}iXo6rn{K^Ugm{NGsVLTQQIQc;ScrMIF~}*~{?xZ|}UC z)%voeOU2Vbu7Bb(%{5!g=daxAHc3V5z+>?E76HlSc>&q{{ zJgU5>EY^K=``x_dYqp*_vnNK+lE-=9auZ+6u0=XLho7HKd(8afJ98Qv1B>H_g?h*I z^7xt(_!*jJt_^x6<$Ce%iJd)$VVYl~OqdVEFZF#=7-s1t%fP_E;OXk;vd$@?2>|9n B#bp2h diff --git a/doc/html/images/callouts/5.png b/doc/html/images/callouts/5.png deleted file mode 100644 index 36e785867ad9b06bb5da296fee61b67cd8159ded..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`&U2>EaktF{gFn*{nkj zBCY4o9LZ47@QCRUnZAf+N!}-g*k62kUh<2$=N}3cU-wJsu7~Tf`D?j51GwEfg_G2_ zuV#t97&qf=>*tSit#h_USr*FJFU!>WaGpbPU+ne2DLtw;&jomW^|@TLId}ILd4;Y; z`kGI<1$&J<4oW?f4p9*ch$x|rP+;KqSwET0Ksa~vKtM(>J91HOJ>EhB>xN^tsw+8di7uv`rMqUeL zJtlGLsS$%o&3$<<&56<(YY$o;PcU%UfB(F1o@3V5sOFBi;${Vo2fOrSjvstkva9-x zil;zZBGUt9^BXy4GknxI4hvj-p!#HTV6S6ePsEk3N^VkheYYwwc>v z!48gj&!5^CXy3`&YF5dr$YOKedHr?gg#ir$OfFx%f9Fdu@F;mr4Z2vhci-*k?73P? f@97_A_`n?SY~RWh)zCHu1_lOCS3j3^P6EaktF{gFH{#8D;%7vjax1W#KXIAnv(J`n z&5VyM+63~m6_r{NIT!+`rAn_gmE-I&+!3QUA?T1q^ClfZ7RG!2%96cqg2wgyaq?lS zMX$X!U8LbO@45W6mvfv$L-`J@Z+FmS&DLGD$|-VMfY)E~efQs=*mUM;<-bcWOZM5Z zTz)B%D3P@Lt`d*4kJ{wr1(Q_jEaktF{gLJ{wyX( zf%f{%yMM5|1Qs>DxO#n#YtRpleGYL4%{eMNMC?4cR!{jhN$+gat*(bhBwQW8eR)?F zba$a+^0L_vzt^7O@l~6=`|-z${Iyee1O}bTzyIC7L&Goql*H!=r=P}oFAaJ)O@ZgI z{@Sm`#{5B@N=kt`V%+OqiyeDxcc)!#?*L7k5+eADVIg?*L>hpfK3x*)1hCVBt; z;|%wV8@Gym{wcFIjN7SWb%BU0N0Y+6yzR|3cK@fSPF7(wKKyx4{o#4fYt#Iv1TDJ# z*2#-AZQqV>`4S8w#?i?>7PHU(+hgr1l-*Nl-OBiY{af+c^=0Sh`7EaktF{kyy#=ct) z0&EZJryZ5xyvdOv(510`p{HDvlxC~E$|>iVgULHQ3PYvrom?h2P4(>+k=FEToVfLb z-1}ul4-dV}J2m&O{aGGazV^u2>+);2+U^P78~6Tv*4AI1E_e2NCZAD1|9M}poAQ6# z2UUCjU5lzOJ!f0qp`v6c!}s@T(aY_*-6p<)(^RJf%{ZH;pv2Hn%$FKjXEE0=dabFI zOUbTczTJ2ED(5xNoT$P%L(+vssY!q-Q6kB1zW$Oa(QCh^Kc6#2_JRrTx8JslG@1mM zBBvdU`kln8=_3m^%&og1Cq^RrH#tzmz{IfafeFfcH9y85}Sb4q9e0BP^KrT_o{ diff --git a/doc/html/images/callouts/9.png b/doc/html/images/callouts/9.png deleted file mode 100644 index abe636072b61306fbcd6157b95dfdf7e86a77e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpV_;w?d&FzWz`&U8>EaktF{gEcf7T%f znb!OIl8YM`EC?0g)MK6LySsR*bBW@-#a{$sD|jaA?Rq5|BVw*<(2>_Fw2;L_Ls+eT z*=m-pP5G8*zMrjje*N{AqvqEc&v$lO8~PeQnNu$u7&XUG^XcT&$oGAZue{@YWbseb zX;0Q#doE68rNi6aM(w}9J~guKY8ESl1YdhX&(saqqyj~D?!KF+)#9L-_*{J2Y1Ks< zObjyp?mceG5^anO3Q8tYyaIvx98EzeZXaKe_`Z|7b6wRX+{3FhZAn{V<2dEM9+du_kptYsE+ z{WKfa2W_~S^T2{nZ8E1=H*3uG*3`)V4^%t_SRAV?Wb9U5edYbrW%=bs0jAGCWzMDv z&-uLjLxRB%P3bLBx;@8}pH%jFEoHiFvT*CZ6}7y~440#x2c4?eefQp-XqD5OV!VD< d@-ZKf|NC_Jf+y*vd<+Z>44$rjF6*2UngH>Mv>N~b diff --git a/doc/html/images/caution.png b/doc/html/images/caution.png deleted file mode 100755 index 3c3b859c2276a628a5b5c7dc50ac720abec0b612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeAS@N?(olHy`uVBq!ia0y~yV31>AV36WqV_;xdu<*?m1_lPk;vjb?X7l5|!3+$X z#hK2|0h!6k3=9>w-p))95XqD}e*fJ(8HpK^Z9L9?LaICpmg*B_Tv*di7#x})VxZWq zy`ibYBZx(iHKw4Hb5mEB2Ahi`BlE6i9i~&ec66;+ai^#5!>V_$?CwrqJ^O$A_WG}1 zg1?qjto{{#mEnY+%Erl;6Py_)?R;rtAI_fUks%>$&9;GobwvZ?6Xlzkn)m+cF**n& z>i?L&N1A!UhYJ7q_viobS1g*eQ-(odPJ^(;#mpSW<=hs1lg|iVQ*W6wb)M3SgMLiQ zKC_5xJP=THuYIhdc)afM-1usyKQgQ_d<=aezo&A#x5|8-x^j8TnZC!W%nG-4UxfcQ z`<{JdYm528p6AQlKku06dF#Rcx%IPDr>WIE2$cNj`LgQco&Ogt5B>erdoQB?F1x_u zPu01bAINTqV{DjGw|=E8Tf-*lhI9AcZ(Z@2p=2tP!rv)#51#%L=FBN>qQJnlfLU?@ zM@XaC1?FQ1WFi=?AMn^T@N+OMOi)f}wwSI3zb&ztZI9;Fzto-3z-thU5vcW{0luZ_^9gKFY<%gy}jQ*f;rak^pH-|$92Xmm?7Xh(H9X}KjJ$Mc| zZ&PmdV7=6^MbY*ILlOT&<x@g@dv416( zCA78SSCiV}rx$l+cyF<`Vv+4W=On&B`-1NazAvF)G^(Wj@--hcFqkD#+#{_fGP&X8 zL6Ky>=UBzt z9zXh2Ai6^=Mn8|mygB+<_v5P{r&Y+?ug)Og|s`DcV6$De1u;`%d`E72bX&4gl`l5Cg@F+n{;o& z$rRpAvX(t_{O-Busl_YWtL_(H-1)M5XLsR|vW}}ArCq%pdlx;>d?iwS%FWAcX;aa( zqIM(wKJn`U-=hBY66?o5>*~5Pt*z2xu{g=oHVU#X;#48l`>g&UnRbB zm3FmV2+8a-G0QbyJF#r4neXunrZ3-pVW|@QoBm6n)^U*DNs+O@Z<*vmv!dTGVdqNUwl`ZFf^RHq4To^%!%N z;=(S5aE6==&J3?yYNKo**CM6W|?N(y?!iX^A_Q){Mq-fHkSI7J}Sv7dH3Sb zuC!erceR(chc66|T=QsMR)py~_e-0vpT3fPb@r9?7u7GHzbt>b-zdPC!}vzNLBfZl z7p@qb+;H*3M!~Bm4r`oWar{MovTX9U!rqU6uRgh|x4L}IySTr%T&}C!deU){Ie6B} z?Jwmn+g(1N_AJe2v)N|LV$;tYpQAn(ip|~H7kXw_UgNfc4L1@C?>%Z>Ix}_GQ_0i& z*L+zcv^Hu@+VzZeopG0Uq@9X7YISMXy;=E(w{&i>%sRY1bX)J1+zqv9%d?Je%-%G6 z^8=hpm+;R5fB;iL-UWL3cdE!&bSF*0G?$x44La#5q+Vmjn z)vU)=CwbpKd%5j??w#0!bKl;3v+qITyNzcT-=F;C<@?CDKhJm{?|y#uF>iHsh5Uzk z5v%u2+r8~H`;Q&JWj<7H@+*#gwd;P3;l9^3*){WjOa6TNi}%OnKjuHT|Jcu6z@foe zA+thshTsix7fvqzEWRkNGA=#tXYCR#Iovx%wWOuwZ^^dta&u*KMaR6~^Y6j0mj#zU zG=12}J4hST~q|ncfGRO5er7ZJJ^L_Sv&4M+XqgA#QZ0E_ldUIF#YoBf2-#*HO@L4a{54S82fA_@fckb8Q z3*QFb{#~}>-HH2#doPzhKN;H++qpaMx#Y8{Pxs!H-LqRgUa>y?-xdCK_FKd{L_csH z`yTOja`y_p)!zK6eLn(=Aw)A!}>lzeb&^>n?fcxYjd^B=GEr`~C8U3F=d z|JA~)i%t1V-){Z1wK{t`Uol_5%tq@=Vao%;L%x5^_;Zo{>$bK43 z$&#@+XLaw6%I%OVUw*QDXZgS6{>gu7pPxMw`#Eh=*bdXhrSC$1tlVvH{rAq@W!J;* zpUcp<;`K|PQ}@yPh<thwOC)X?^)B6)=6x{;a{0*vFZ?{n84g{J(pqCD#i;Pj15Bn`2V^xTe|DM zEn{F{P^b!tC`l|W$;dAPwZK06>YVh^2`li^@i^0!AO@)k!$L4eg+1%vz{)F zAs)x4hDGPcx{JnTpWRnE|M%Z_kG*SsAH^7K6JDNo$to!Oa@#RI#a#IbKNuf|e`xr{ ztsttP!@6_5%}17|?Hc-;9SvGrm9}{&ZD05H#`8I~GhfcCy%gj$XI@@rX4CA>R^3UDk ze?(@c?fUWI@P65?@BZ4pF5fd>d`i^;tySUGS5_;vYk6E)GW+~GzS!Nf3BVf;bqnK-~F{Rmn-ZH z>U}jbPI#&1T@inFy0g)d;eL3X*3u|p;Zv)xPT^t_ElRi|&n+2n@RkC)HmJ+t7%B&Ewc;^tWy#?7(ncGBcrr_Fyk^XKfX zra#Z^et#-{&-ZzE&Zekb$qK62w`K>YY1CSg;%OhZHCtE|`|wBlz4>omcbnC0$HKHn zOAiGV*WD{i@@#16?}*}cI^KA8?b;VNew%wI+-6AMv1lE4-}A#BYT4Ie7Gg?z}{JGI@1p(Jc!X_Z%cGpe6+#BgvG*)?MdZ? zbg7;+^8~=A1iwYuSb!RZIy93<`4W-LqGp zIxG6Ta%m9bY}t$NuO9982`F1~w@vV{2=mD!ogxpjxD<^4mMpgAT~pcX(%g5ue6LlE z{;mGNsHudwD9|)1V8r<2a^3e30XW@(4f#p`Q55DjAUZ&amUG?$mssEf#{mEfw z_KP;CV^S#&Gg`rR&41SGwT|3>;;a|V&)9$Mfpmi89v3bv_IQW0Ti@(?yyr|{e46g+ zZ=wd~Dz(jalKVLFM1HSUH@ac=^znJmUO&N@UyQBGoD(I4$hDCzDoT4X#8TXW&ggQ6AkgF z|NXODw|@QOv$M@VURxWzWAo-_xp=XOER3(2yG~BdIKQ{!j+2C(Y|!P>pqF`T)puOj zW!-2}`{RC+Vd$BCG3UNUW>q`0<^{=~jSZYz;ZhQO3-+okmTH5-3D@)tTH{RV`-l10?l}34HS$sRGa)|4GoFv~Ae~m?Im(#ai(hz_1 z*Ii;;-;WY6hZA?Eva>Jv!4z=k;-sI_1?->MKYZJ2o|yJZlM=jS!txY4mpriZ8UiNco? z$9}|b+kH)$xtT5X;<=LRJ?Hse`6(rozGIZInc%G)BasurH;!Nbe}t`JpYXIf)mqP+8gEHX>XNhwExol zb+5nK@Avt3v!0q*t*VaGu2nF|IZ}A+n)kx9uWREr_Z{*GPu@K3&AC8%W20O3MJqCP my?XOulB2mf<2BO{(rMq>1 z7#LWXJzX3_D&~Ybz{S|QJTtnsltMyEt#Tl;v|NO;v9`l_))3dflS?I6H zS$jb(b8Yh49f>lyi&H+{FUwhqPozXyMAgO$PLw+`X@4OhhomGBmA=~_D1Q| z?(N^;kt-&UeO&ro!23z_CpvBXaP{id|0zp@PKp*eZJl6q)iCX`F;BBgsd=1hc4&a) zEyh_>uAVrSc;ahrP7&MLKNGHInTDUx&k)}w9vO34`!qEvb~Xy+uOKSNk6( zv>&s)yq>k+I;w5?&Zpg<%4gdDwqZYaQLJjmv+%jmwG|syM_%oVReo^o_PjjaM7Ish z%6k_b6+O8rr!cN%apG0A(wB=$YHNA-OxUBqxl-n{cURlZO&2dNS(0$Q<181K_wme! z!n{)kHWuM&S&UCb0aq0ZIGZW?u^!O<=L>-K(iWQ#!f&awIi~NtKn%sIO zysE`fPPtq4blT$3bj|?BBjQ%~?%&@&tBlv`vO)QZg=^(J6gAz#^&9)vzubFYGj(I{ z;}Tc-#3qy78U}A?EOcP#Q?apAnRvqG0f$UuEMI?tTUTx!%L4g}&z+lIz6|B7-m>kl z{@$C2P*-MY*kqgm~B%yI-s@dRDYk{?7W}Z?E5f|EK8s&W{ye*gx9diU zmOq8Ze{aYYzx3*^*y;8PBROw5)u6)m!yljToz+(LCcgfPjEu~jdGi)&tO}DlG?61f zZ+dF}*L%$?Zu8zQQ(T-`e_qx@ab<+kG!NC7_pvkDdvlNQojL3_|N8W^X@MeFn~tSu zvBuQxHhFhLMQQ74&b`&*29bNJ^)%*s9-q81#p>n93c2kQB5Z4agc-50<}GzhKbyAM zVQbXc`g6_Fw<;Ij$@`nI{ijW}qe`<%(8my~r=Ndorri2`P*7^B91lyN$XSIB$Mn-r zi|%i4dS;i`H0!41%9~HV{eEz!P;I84k|ayhf^~e)44$hl-W|W#tU>y=*Uqq|H?%~! z?7#ig{GS=TcFIjTcIC6 zg}t5zefbcecUez&&H3|QF5Z`Pn-4xMYkgo))FX0^>uAu&N1ql&t-W{W&L8ec{U2rK Uy!q45z`(%Z>FVdQ&MBb@04`<@YXATM diff --git a/doc/html/images/important.png b/doc/html/images/important.png deleted file mode 100755 index 54b4846b49cb77d09578e03fddef8173e5b2cde6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4666 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wk44otVv!`vx;GaF%2` zI|pPYCo?cq+iGS4^JFAuNVf4f%QU%gGJBl!RACQnlr-uwP+|2s@rY}U zg3=@rM;Au%nAoN@i)u_i-MQ;$eZ}u^fBR7X z_U)_cLwOtCR4A!yikdMfbWT6^y>w$bTYHPq#>EWW0S#PB8oXH4O>dq)e^Z`g^Cj+o zs_)$xw-oJJ{`>v;|HlP(dfMnQ2>6}&cxOdO--OF8GN*kXt-EqO+`?ElGNM_w)#o|4 ze!z)?+A=?Tg~KhLNx%Pd>+$>73Qvp}3YN@R?_;s+(8TzeRavc;8~>;RLJ@J^KWEz9Q-zk&No&OQ$yjCZ}fkDK9-N-?3 z1(WXr?w$t84J_LZaPDBvf57i_!0iCzMg`6fj%p_ucRSc=u&6#zSi!V)0i#J{SOHr} z)8_|9JJ|9XcPFseurV31#x+%b;L~vwXlXqmz&ojNibAOeyHV4P38qh2DxLNPaES07 zb+FNpJ=Iv|+!~-6!g|%w_k#Wf%NIr^%u-EqPQn*-zL1s<_R1!E%BRqtmtJ%vj*IjhsssQys*%fwIY_G6n z$$e$@bvwPd^nzH1d5M7)+uY7`?$Z}bUwr#w^$Wo-BEMwWniCTuB#e8s)mVi4PaYFV z6eM50-!MX5nP&PH_F8enhxTP>W-2 z%j%ZGL()nUS2&rd{}OoIVcjWurp`3r$_(TcprB@sj6n4|R{}9{is9CsH=C z-JB-l<){2!*?i*q3G*l2@4k5C%aJ=rb|hIJS#{LvNZZl4zz-s&U9zdls@*|;mfky^ zX9^$h&hD`8aPP<$UoU2_Zl|_S!Ev&|ln>K9CTUE{n6^XF(D`VP=?cFPJ=6ZGo~l+W zPv?wPChSt}+h$*L*zGlYQSu9&UDCGm;ynJ(wDXuheTkQpH=9@9#5L3QC}<`q@bI=t zD^CnOV{up_wPs4tgiVvXCf(A$s%5IPRYO-jS6fy!R^hIitlNC0{FAILw zspAzEea+o0_*=)D(3_T)yXGvFabM@~uIG+&Wkg)`y>Pqee>46x{Ap@h)YR>?$!X~! z(N;^>wnb}`_9V?r>VLFG$oFKFrr%1Rmy0fOFH^bPH}k}rgl~q=r#_t;JN5F^*HhT1 zP7jIDV$|BHm8<0+!nrEvYQ|Ngt8rH=O;t_xx5{i4+v@(RqI6r;nqP`v>%O}3PIH@Z zOs?0jS8|%k>E5YFvl4r=CzaFsU1li!Z z7IP0k_om$~}onwhgAcSQEyl$d=k?zmo3yt(`A+q2&r*ysN{c<74K*+)G`_yj1*38@zw6SZ$s?9TmT)%vGv z-+p1cmv@hS&-^vXYrP}C&*ndtKG%Qi`Qmuz`!e_I>}TCq+n=_-{NJ~KNB{LRn=oHu zu42|~Ol~`#PTcBwRlr?@s#4Sr#?BGZ-;G{y(PDEZ+ZKx zzCE(R*0E*t?zrBVy5V)%I>)@scen34?%w@b3=%!mVBW7 zvA-5O%D>(_wKtw?2dgDT3yWW4NER(x3VVpYg$ot1w=M59fEa^vrY zDaUW#p7zn;`-cyLx0Tm!<=Wc1Rlfh2Y;C~vpzDF_1LNy>igg~}_}q4&?cd`!k9~VL z^|toT_y6F>;rDCan{1=(tgLDIdU=h}m!i}BTj%cjz4`I^*tNUXmge?sJ9PO$$*-5< z`&<4SRULcm^FH$1&1>;j>(^#3-zr|>ARBG{%sSbcHC8d!`T3pmU(2G)w*O!D{dVW) zQ_olHd&FtHQ~dJet4{oxT{{Xie_p!tbjIn)duLb4$8+v0+JAm|{)bh^ufD!MXMOC; z?XUM&+Hh9}C-zu=y!Ipa{h?j0%imABr>iTr zXL@D*C+6SI|Bo-|zwAA8{)YKlcG

{yqAbT4R}68To`sNnBuO!wFUwJ%u91iQFAA z4(LLEUpNJL3u zX-P(Y5vU3F*;nVJk4{*DpN_{_PhHKE>He{kMlDyaCmsSIEHu}FAdKwmT?!g zEtmT}E$sc(!yD&F=&(m`6P9LT)S4<1T63EHAEW%w=$hp#9w}=s4^k0$qx9g$!D+(# zA4T|QFP-|$(%QJz@~*M=T4tZn_ut<6eBb;1PVxD-f}wwH8_X?hQl=Mm%-(UjW0s=N zrO?SHtS9wUEW`ZSl%y2>dR9$gd1&py4$MMs|kK4HvId)u+3dzd06JY z`5nGb_9<`L_O=KXy^pP^IK z$G5qfAz}|I8Qm84f8#HZT2|cl?s5XRM;Qm>;?G?%Pg3hX%1O*L=FM`u z?LT)4Ui~X!dnsbb@pFgl#;P>-j~C}(@MMdcyR*+gXIHJxm-P;7Go{b1nEoN|rYpB5 z$ES{+t0jaN-|sFgxifvm?UD`Re?p$Ub~yMs(?CGFzrgSKl2^HpfBaCEnYqg6?CleW zgIDODQF~e3|6U@KB|U^|PwbM7O3j}x=Eyxbc{%;Zr+2nBpMO}g1@b)SJ8L4Q_Tl#Z zJ&i{rXM5W_HzUA;W`3rhJ3+#&f-h2?;(PY>;tHR&*?WKZ1u zWgHXz)YV^S@lHM{8+Jm^a>|EFZzla_b7>*58XevB503Rp7rp$X>T@mqp{Vv9KLNw7 zaa9^mKiNvXeze6(sJNoDC zZ@Fc!O?jqESyY#aCT{HMu;XiE<5bl5;<;}Wb)5TI%jR>e-2ZZ(vXi=|yzjBKFK-m=k9EyZ zu=TC(|FU7{@I;VeDXLCP`@nzMVw<0M5t{h!#nx?H;C;#vU z@ZNspJ?E;is@RDMk0z{PiLIT?%X#SqYu{{rm5z3mkQyJon}32PmK-@H7}ObjIY?3Q zN!Q^r`9w?A%bkLaoEozi-fy2A^t@z_^?d&D`{xwjITc>C&DpxmBlgus{l7e7!jX0_ zBKnNlCZ{Z1Z)N{FdGk%T?RM+8`At@FJer>^SaK(#*@t)1M8&gH&Pi^|i|SQ(itXLi za_f+mM2b?r*JpEGPj6K_OFT7r-up};9>M)C~-pj+K zTH8)uE_~!+=JO~(l8?znFnEfTfAXu`i}EW@uiW@y)}7N1bIrHOoP3gX@YGWV_O~9d zzloWD_L5z<`B-lElfJYW(z4Hr(<5SUr|4U}`;_^~@&gkWqf?mIlU>p||IJpW+*L1N zGMZF8t%qar>+jVwX2_iI+0h#HV-iQvThA$LIArVc=PgxOsO=J}MW~NwwW-wP1^n~NzFeEDHtYDByN`O>o=W|-KIHQ= z;=2Bi9Tj0W+m+Q+%uV=q+n)UJdq$+Cl+KHtpS`7i)OiNI@7ZECIcP@3$u(-*rl$qm zzIH5rtzVb@ze?fxf3h{YKXb1z6?+*yHPyP+ae3$Z?cbi3%a>hP!GEIFWWB7g?X4nv?^4Sc-f+YJw^Bt`U4EyM zc;c1Ht3`r!t}pT({chMw`7rPAeVJG+zvJ^8n``%~gnM0`a`{cRX1Qul7B8uOu6O9A zdz4mosx7+i7b=%#$&*t!fH&zoht7We=<;H5(cdtx3Ep^)E#M3M1e&^lG zSzT9EE;x1O>Kz4%y}RO-SKIcVYd5mqts{LqeB;%c#;dK&oNqD@%~SEve0}#4%La?W z6PKU-UGvC9bhV3|OyP-dD(9bfJQQ3k>!t5k@cW<0yL~%U^OA!aNN$A zV>65MA6{&BE}4Jt2!D9r%JY%dqElmBW%oxG?i5jyz5MiHXGVmQrt*8fYmIh^IP!zw=8 z{`}M}qA&l4Reaj~)32QPS*2_1E|fRxlnPq6ZeBYfaMSLuzdLhm_zORGyVl%}nlAtU z$@GfvcgsKAnrWQ(|4)bZH{VC=7n^tPDc4@=`|bPpj~^cH|N8Oze~~ZmA3nNNYzC)wmA!f6#(`(${H8DMr%&2{`r5^9%Y`>S|B&eP&u!kDt;;1p zZ#t*H=G3iQ`~`)%zMd*pQL+cE|H)mgQ+@RR>!oSSR+j9Jee>SDwEFwfoZOFdYOY+0 zTd%FQHR*BY%8*GfZ(8c;o0e?cs8Ia*^NKJnuihW~-~0V%wBwUGdMNm~9|HpegQu&X J%Q~loCIHo{?ri`7 diff --git a/doc/html/images/next.png b/doc/html/images/next.png deleted file mode 100755 index f3a1221df31c3c2ba4e3a72edad38c13703767b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj4kiW$hQCG&XEQJ`a29w(7Bet#3xP1>rMq>1 z7#Nr~dAc};RLp6eeB1w40K>80^1pI=K031Q+}6PA-o zut+zF-j;Gw?uf*D*{((14$Hcux3in6E_!$R{mVIjisa6HXWSoM6uZ0c{E^r9Ur$om zdhZ^4hON-~BYZ2GeK$N>`J?GiOJzY(!s6V|uRrr03%sLkr*1#v(teTeT^zk4U9DU7 zv%f8b6P+XKjO)LDUiZ<0p*o>#X6mOi#R1wP z8(l6)T21PWa1OIO8vZ)ea}qY-^=ZrWvbZQ6m)_kQvcrVw=bvte)59DYyUFcC9E$Tt4>&6 z+W%-jd;GDDoIH;dN(0uWOyTmnDE=b*gwcE+xwelYeE}Q`Hm&Y3XPNlB+x+oXzleq5 z0w#UgMVr)jUI2-(`lA6OUY& zu=Q|M1xs0v^{>u8Av+EoyuB{di7k}!tvm{Q)|ESyVT{*EHLXF20N@PNRO*vTc;nVG>kH2j-tEeVx#8P4@BjRN>Ropm;oHA%y^x5t(%-w` ajXhtHa_t{xfsG6d3=E#GelF{r5}E)mona0D diff --git a/doc/html/images/note.png b/doc/html/images/note.png deleted file mode 100755 index c3bebc7ea6aae0fd9b713ef8ab3cefc31751a03a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4648 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wk44otVv!`vx;GaF%2` zI|pPYCo?cq+iGS4^JFAuNVf4f%QU%gGJBl!RACQnlr-uwP+|2s@rY}U zg3=@rM;Au%nAoN@i)u_i-MQ;$eZ}u^fBR7X z_U)_cLwOtCR4A!yikdMfbWT6^y>w$bTYHPq#>EWW0S#PB8oXH4O>dq)e^Z`g^Cj+o zs_)$xw-oJJ{`>v;|HlP(dfMnQ2>6}&cxOdO--OF8GN*kXt-EqO+`?ElGNM_w)#o|4 ze!z)?+A=?Tg~KhLNx%Pd>+$>73Qvp}3YN@R?_;s+(8TzeRavc;8~>;RLJ@J^KWEz9Q-zk&No&OQ$yjCZ}fkDK9-N-?3 z1(WXr?w$t84J_LZaPDBvf57i_!0iCzMg`6fj%p_ucRSc=u&6#zSi!V)0i#J{SOHr} z)8_|9JJ|9XcPFseurV31#x+%b;L~vwXlXqmz&ojNibAOeyHV4P38qh2DxLNPaES07 zb+FNpJ=Iv|+!~-6!g|%w_k#Wf%NIr^%u-EqPQn*-zL1s<_R1!E%BRqtmtJ%vj*IjhsssQys*%fwIY_G6n z$$e$@bvwPd^nzH1d5M7)+uY7`?$Z}bUwr#w^$Wo-BEMwWniCTuB#e8s)mVi4PaYFV z6eM50-!MX5nP&PH_F8enhxTP>W-2 z%j%ZGL()nUS2&rd{}OoIVcjWurp`3r$_(TcprB@sj6n4|R{}9{is9CsH=C z-JB-l<){2!*?i*q3G*l2@4k5C%aJ=rb|hIJS#{LvNZZl4zz-s&U9zdls@*|;mfky^ zX9^$h&hD`8aPP<$UoU2_Zl|_S!Ev&|ln>K9CTUE{n6^XF(D`VP=?cFPJ=6ZGo~l+W zPv?wPChSt}+h$*L*zGlYQSu9&UDCGm;ynJ(wDXuheTkQpH=9@9#5L3QC}<`q@bI=t zD^CnOV{up_wPs4tgiVvXCf(A$s%5IPRYO-jS6fy!R^hIitlNC0{FAILw zspAzEea+o0_*=)D(3_T)yXGvFabM@~uIG+&Wkg)`y>Pqee>46x{Ap@h)YR>?$!X~! z(N;^>wnb}`_9V?r>VLFG$oFKFrr%1Rmy0fOFH^bPH}k}rgl~q=r#_t;JN5F^*HhT1 zP7jIDV$|BHm8<0+!nrEvYQ|Ngt8rH=O;t_xx5{i4+v@(RqI6r;nqP`v>%O}3PIH@Z zOs?0jS8|%k>E5YFvl4r=CzaFsU1li!Z z7IP0k_om$~}onwhgAcSQEyl$d=k?zmo3yt(`A+q2&r*ysN{c<74K*+)G`_yj1*38@zw6SZ$s?9TmT)%vGv z-+p1cmv@hS&-^vXYrP}C&*ndtKG%Qi`Qmuz`!e_I>}TCq+n=_-{NJ~KNB{LRn=oHu zu42|~Ol~`#PTcBwRlr?@s#4Sr#?BGZ-;G{y(PDEZ+ZKx zzCE(R*0E*t?zrBVy5V)%I>)@scen34?%w@b3=%!mVBW7 zvA-5O%D>(_wKtw?2dgDT3yWW4NER(x3VVpYg$ot1w=M59fEa^vrY zDaUW#p7zn;`-cyLx0Tm!<=Wc1Rlfh2Y;C~vpzDF_1LNy>igg~}_}q4&?cd`!k9~VL z^|toT_y6F>;rDCan{1=(tgLDIdU=h}m!i}BTj%cjz4`I^*tNUXmge?sJ9PO$$*-5< z`&<4SRULcm^FH$1&1>;j>(^#3-zr|>ARBG{%sSbcHC8d!`T3pmU(2G)w*O!D{dVW) zQ_olHd&FtHQ~dJet4{oxT{{Xie_p!tbjIn)duLb4$8+v0+JAm|{)bh^ufD!MXMOC; z?XUM&+Hh9}C-zu=y!Ipa{h?j0%imABr>iTr zXL@D*C+6SI|Bo-|zwAA8{)YKlcG

{yqAbT4R}68To`sNnBuO!wFUwJ%u91iQFAA z4(LLEUpNJL3u zX-P(Y5vU3F*;nVJk4{*DpN_{_PhHKE>He{kMlDyaF}_zIEHu}FAdMkmpLw2 zYkK_L8%MqA$3IQTi0XRsqCv%Z!<-|HB1bwN=C=tw@%|T5=VHgkF@eS7(Si9%tc5Jz z6Pb>0(LJ@urE9s%yMwmR-tBoeGj^>^%93Ya3aWOkx>p?bR_4iV)_xxiq$DKI?ns`b zc{A6&;#!}fh=a%1#LUF}dyN z%!Y@ii`5Ua{J+V+LHyQ?)!~I@r`VbeHyk;ke06nf-iyla0UIclG86^Uu%YE6ncQKmTLKol~*T z|6V!`>@NlTN_yd zl@gDbJmN@JP0#jPXQpsHP4W5iDN8E5KE|FZUHPU|xUyn`)Ls2+IhGPyk@qDpv`KN_ zlyt2&>iM|-t)0wy_q)P1pN$Sq4m%aIA;GYy+ko?Z=CSm@{zd0b*u5}$A+SZjB-ZNJ z+<=4USj3;@R_tqT-(9=M@O|=02R`PlmySNT`7q$^+?0seO;;37ZTP6%TDGqO0XHgH6P6o2B}4);WjzbySwLl^zoK^4L^<`}wDu zpN_k0{@W(`Y3|3)``XVk(q1H|CGDR3u;y@+FU!1gp)J*ht5T(&ZRTm)C{yaJdDXi^ z;%}inlP3FCB_6h2E~^f4o)?Q;GmY2iRzdSi;g*RlE6aQ`4{msoZpBde!bM54%9-8F zpDD~d^ShGH+0Y{wH+(tF;(q4-QcXRs;4Lpgtpk#irP2;>owqq8&GVDi_sb%lb0++@ zS!!}U^58~2J-f_T1^Kf->n(mM5Sx4X;;fG3rB#lrB8nw7`B|!tc4bb9(YV!d+Ge#( zQRp12TLCi56#}H9f*Fj9R&$l|Yi`%;%~bEu3DUcAx@U)vNX#9zBVAV&7gtP*;MOwM zH1SjSRl2O{eW|nK>#ZvpPSU0smow71ywWcD?!Nizc*kN3{kdM(v(8FCefRn00#ldF ztxVI`91Dz+*s8W*S;LmZL(y|Cux(R#vdrz~TO5h%RxMHCcEJvAS<4D9e*d|P zyZ!j%y6gtk^OLH2Zzeoi@O0Jl2R6pGQY<%Y-aP#6+doHSQKy@-9KYW>~>pJZbaq0#d>pAX|4<8H@}^=@Y#ys;J!tPM|nS0 z&$%x=X?=;t(L%4j2C4UPtr~vdzmI` zZxwy~V7IW%t(T9kEwwyz!TN2jh2Y5vD?c7B<3E2hGiUO4_cdgW_$DJ#uX1QdCgu~xuY_Zk$?NHAHRQb-P+wQjz-zVqxwMV(Z)I0;nQV*ts!Xxc`-k4Yf0xvF-hTHbm(7k3cUAhY zR5lY=oM60s*;8@zuqCU4e*U;uymG_(pHKP2Q`SE85;}gU<4nS>lY7th)%;s>)=R|e z$SKj*jRJx*SKs<{@$0fR8)bi9{u}#p8~dk=TPt^daEr})qqSzDE7#NYUp}c@EoTl} zyH~vS>&d^ef1aH)a}wLjzfM0nci}2IyVno?rLniGmnej9(3+*OLuc`4Q|a)q*RPK4 zWV6~UF#k_={I9!;dGYaK_VxLq+1jSpGIDQRY3>XDawsihop@Sp>E}<2>{345K411> zx3z!a&$Dg2N(<%8&t2Jgy?4WD=OwlszVD;8tt0ZL6z+Pbn8dl~_gBStwsyyOy1%Zk z+tBp=eq7jcvDF&C^?3Vs+x=bpYlg7!#+P$fM8w|u7WeJr)5+8RJUwXlZqv(4PfJ>5 z_HK-sd~~MKDb>Be ztk+A*m43F0Rtj4eWuwvhgDFjR{X{Aex82ms+k$zbJcbn|CXM(P3H;g*_}pu`y!7&{3yWw)}hZ& zX<0zhixnGwoVgYgIp^z5&tGp2)|xD{4dLi~{p@S4$-jJO`1tMO_}k&NpNnc#Nc uqerwuqg^+zYt_2{^P6@3mfoXZ;{*5dChuIwP|v`?z~JfX=d#Wzp$P!oJ@O|2 diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png deleted file mode 100755 index f7f036150f816cbbd5abb1adc8b0b3a23cb18884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj4kiW$hQCG&XEQJ`a29w(7Bet#3xP1>rMq>1 z7#NtQd%8G=RLtp}eB1w4fK0=0`CmCb9}jX&i{|bS;8JZU(rk@m$+@m&*6<)z@HwyJ zLBqu}Z%$LK7D(P>EYqc@HB&Dyz50OU9-qHYtF3<)O)B0e|K<5fMusbOSCWJ`ZtmV( z?SA2M)XNP=j_wrOvh>T^FG0c#0e7^lB950N-a2-pjIV5-IU~dL@adCpdRAZ9_a#*` z{!B7Y*d48=`p-K!8CJ{-`^oZt`k$BQGc!ZI>O5v;Tz+xp#l7o$FFkbJ8MH1$`?&h? z3$bs%KYO=q^?g$dQ;Uyh&b<`7lXvi~plwP^$w$2x-&VbjzrJ&- z%)R#hz0%$L``hog-LyIVEOOle*YHJ`HeK;h5pH~StMYA(2iLU;rjt4iGTY`Tzhs?t zcH{r%+0PXi4xBq^rYPVtMZw*JcWt9)#Ods_fyMc&rk@J>qV#vdg&2;gzgv=)ojH?z z%qU^v?~<GESXNgP1H(Vx*XJ);U?7_^S|hIc3Yfca{P?#O1blEjvK!&?6Z15 zm7&ag_qPdqXTLv|G{f&oChJ<&M8i(Ct^R9yGfElf&buW2yNB)62aj6y`~FQE7aUr? zfhU^BnN6p0>&;vLu7+#LPu0G9>f_6gkB`Rx-Q$%Syn%b0ip~#CYoGmB{M1&%dzJIVTo@P_7(8A5T-G@yGywp< C*k44otVv!`vx;GaF%2` zI|pPYCo?cq+iGS4^JFAuNVf4f%QU%gGJBl!RACQnlr-uwP+|2s@rY}U zg3=@rM;Au%nAoN@i)u_i-MQ;$eZ}u^fBR7X z_U)_cLwOtCR4A!yikdMfbWT6^y>w$bTYHPq#>EWW0S#PB8oXH4O>dq)e^Z`g^Cj+o zs_)$xw-oJJ{`>v;|HlP(dfMnQ2>6}&cxOdO--OF8GN*kXt-EqO+`?ElGNM_w)#o|4 ze!z)?+A=?Tg~KhLNx%Pd>+$>73Qvp}3YN@R?_;s+(8TzeRavc;8~>;RLJ@J^KWEz9Q-zk&No&OQ$yjCZ}fkDK9-N-?3 z1(WXr?w$t84J_LZaPDBvf57i_!0iCzMg`6fj%p_ucRSc=u&6#zSi!V)0i#J{SOHr} z)8_|9JJ|9XcPFseurV31#x+%b;L~vwXlXqmz&ojNibAOeyHV4P38qh2DxLNPaES07 zb+FNpJ=Iv|+!~-6!g|%w_k#Wf%NIr^%u-EqPQn*-zL1s<_R1!E%BRqtmtJ%vj*IjhsssQys*%fwIY_G6n z$$e$@bvwPd^nzH1d5M7)+uY7`?$Z}bUwr#w^$Wo-BEMwWniCTuB#e8s)mVi4PaYFV z6eM50-!MX5nP&PH_F8enhxTP>W-2 z%j%ZGL()nUS2&rd{}OoIVcjWurp`3r$_(TcprB@sj6n4|R{}9{is9CsH=C z-JB-l<){2!*?i*q3G*l2@4k5C%aJ=rb|hIJS#{LvNZZl4zz-s&U9zdls@*|;mfky^ zX9^$h&hD`8aPP<$UoU2_Zl|_S!Ev&|ln>K9CTUE{n6^XF(D`VP=?cFPJ=6ZGo~l+W zPv?wPChSt}+h$*L*zGlYQSu9&UDCGm;ynJ(wDXuheTkQpH=9@9#5L3QC}<`q@bI=t zD^CnOV{up_wPs4tgiVvXCf(A$s%5IPRYO-jS6fy!R^hIitlNC0{FAILw zspAzEea+o0_*=)D(3_T)yXGvFabM@~uIG+&Wkg)`y>Pqee>46x{Ap@h)YR>?$!X~! z(N;^>wnb}`_9V?r>VLFG$oFKFrr%1Rmy0fOFH^bPH}k}rgl~q=r#_t;JN5F^*HhT1 zP7jIDV$|BHm8<0+!nrEvYQ|Ngt8rH=O;t_xx5{i4+v@(RqI6r;nqP`v>%O}3PIH@Z zOs?0jS8|%k>E5YFvl4r=CzaFsU1li!Z z7IP0k_om$~}onwhgAcSQEyl$d=k?zmo3yt(`A+q2&r*ysN{c<74K*+)G`_yj1*38@zw6SZ$s?9TmT)%vGv z-+p1cmv@hS&-^vXYrP}C&*ndtKG%Qi`Qmuz`!e_I>}TCq+n=_-{NJ~KNB{LRn=oHu zu42|~Ol~`#PTcBwRlr?@s#4Sr#?BGZ-;G{y(PDEZ+ZKx zzCE(R*0E*t?zrBVy5V)%I>)@scen34?%w@b3=%!mVBW7 zvA-5O%D>(_wKtw?2dgDT3yWW4NER(x3VVpYg$ot1w=M59fEa^vrY zDaUW#p7zn;`-cyLx0Tm!<=Wc1Rlfh2Y;C~vpzDF_1LNy>igg~}_}q4&?cd`!k9~VL z^|toT_y6F>;rDCan{1=(tgLDIdU=h}m!i}BTj%cjz4`I^*tNUXmge?sJ9PO$$*-5< z`&<4SRULcm^FH$1&1>;j>(^#3-zr|>ARBG{%sSbcHC8d!`T3pmU(2G)w*O!D{dVW) zQ_olHd&FtHQ~dJet4{oxT{{Xie_p!tbjIn)duLb4$8+v0+JAm|{)bh^ufD!MXMOC; z?XUM&+Hh9}C-zu=y!Ipa{h?j0%imABr>iTr zXL@D*C+6SI|Bo-|zwAA8{)YKlcG

{yqAbT4R}68To`sNnBuO!wFUwJ%u91iQFAA z4(LLEUpNJL3u zX-P(Y5vU3F*;nVJk4{*DpN_{_PhHKE>He{kMlDyu=;qqIEHu}-x?O3FC8lI z@7bKMw>D1R!FRS*W!bCVdkle&uAzz{itqTRI!v8V@rd^yOGo{|{SQPr6<00dit609 zN-N{?GS8_k$1>*}>CNAL@3cYn#?76v$7>&`Y_8t3J3Z~(neS&Mvo?NKZZLP5!qFX2 z!(aFNV}60jiI2HCmZEtTVyPu;$t!JqrY3f=30ZA$_pfGo|Eevp)E+mJT(-%pVo3j$0unviQ}N zli%JP=w-<`WYE5Vd*8+^-*aikOQ!Y-UHR8%_27_Pfu^$CocRVf_Bl`dl-{P6VPeX3 zdfSY}0>`Zv2CUtioA~jY&Hs=U7bCWH%sj-?Kabs@N1shDS`hW&j#KLDrb`); z*_*MV@y&Z@9p6{`k%f#6h)a9e>9NfD2%e|NUFHal^ z2~pUppm|Rym;$X*ZmG6Y_gA*>mP`Vtnd2ybn1#} zY!8Dca)k#iRBaHxEG!`_=X%V4@x2v?%Ccf(xZL99zCTb|<;y6 zvhQ<^P52S^_3=lXcCt)8e{e!HZyvfeSxD`x#=gIQq|fXN5s_J8D}7J> z_&)VBTXOQGMHO0&FQ0fc*<8Q)Y~G{k)!_w?kCk?|rv1=6=G*)Dr;>l=;c}b?KB1mm`l{Oo-0<@#t3Vny_mRDop)6m(G&W zeUPAc{`$IqUPqmm7k>QfJ;%uSkfqcb!G!p8s^{;2G!|T0#(HYTVT;fj?-pxSyA><; zJ$P`(viH)h*od=SLC>B%SSYq{)AOHi4N7HOtcg;K>V49^U>kskX)! zB5jwS?>&DpUGBHDqCoSV3}xl5M>(Vy#+3y94Y=!gZNX99e|7~9(to=jebyHLx-Q1{ zS?qhI!z;@;rS>pSbZ!hS;GEqTyEbe6&vo}5=WLl`9yBEto(`(>tF_CQWW{D{`JPaYN|_K{dUgtfF0uEzhM}t6EQH psb#a8d#Lo`e!guT|C9f)E5E#+x?G@Khk=2C!PC{xWt~$(696HeggpQN diff --git a/doc/html/images/up.png b/doc/html/images/up.png deleted file mode 100755 index ef434074cab1625251ba558c14e5bf47c5add70b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj4kiW$hQCG&XEQJ`a29w(7Bet#3xP1>rMq>1 z7#Nr~c)B=-RLp6;bl3k@f(YA(e{|{j<+dCaBWI8i{UJGmx+J6bk>#`QET?BKe36&H*(nnSBa;ApSy0(ER7Nl zYjK~DdPMD3MyK4#Cy_?w)4JauzrJMaoGHfVq|e*WcV=C=Vc&MWXGed2*wbhhAslAX z7UinF)0wTSaiWO7tC8C-rFCD@tmMPc4`y z%U|lDdFu7GtxYm~?Q8wGlMTW1?_|wC`1<}Q_HE2> z^iIDmzSz7XK*VES&i%h3)A;-OuW+R<)KS~csg`gxduo+mZiGRCh}r2gmkfVB{P?~2 br+99$L2LK4shb%X7#KWV{an^LB{Ts5mN;Xz diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png deleted file mode 100755 index 51a30f751179811a3367891c0e54b1dea7afd3ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3927 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25Wk44otVv!`vx;GaF%2` zI|pPYCo?cq+iGS4^JFAuNVf4f%QU%gGJBl!RACQnlr-uwP+|2s@rY}U zg3=@rM;Au%nAoN@i)u_i-MQ;$eZ}u^fBR7X z_U)_cLwOtCR4A!yikdMfbWT6^y>w$bTYHPq#>EWW0S#PB8oXH4O>dq)e^Z`g^Cj+o zs_)$xw-oJJ{`>v;|HlP(dfMnQ2>6}&cxOdO--OF8GN*kXt-EqO+`?ElGNM_w)#o|4 ze!z)?+A=?Tg~KhLNx%Pd>+$>73Qvp}3YN@R?_;s+(8TzeRavc;8~>;RLJ@J^KWEz9Q-zk&No&OQ$yjCZ}fkDK9-N-?3 z1(WXr?w$t84J_LZaPDBvf57i_!0iCzMg`6fj%p_ucRSc=u&6#zSi!V)0i#J{SOHr} z)8_|9JJ|9XcPFseurV31#x+%b;L~vwXlXqmz&ojNibAOeyHV4P38qh2DxLNPaES07 zb+FNpJ=Iv|+!~-6!g|%w_k#Wf%NIr^%u-EqPQn*-zL1s<_R1!E%BRqtmtJ%vj*IjhsssQys*%fwIY_G6n z$$e$@bvwPd^nzH1d5M7)+uY7`?$Z}bUwr#w^$Wo-BEMwWniCTuB#e8s)mVi4PaYFV z6eM50-!MX5nP&PH_F8enhxTP>W-2 z%j%ZGL()nUS2&rd{}OoIVcjWurp`3r$_(TcprB@sj6n4|R{}9{is9CsH=C z-JB-l<){2!*?i*q3G*l2@4k5C%aJ=rb|hIJS#{LvNZZl4zz-s&U9zdls@*|;mfky^ zX9^$h&hD`8aPP<$UoU2_Zl|_S!Ev&|ln>K9CTUE{n6^XF(D`VP=?cFPJ=6ZGo~l+W zPv?wPChSt}+h$*L*zGlYQSu9&UDCGm;ynJ(wDXuheTkQpH=9@9#5L3QC}<`q@bI=t zD^CnOV{up_wPs4tgiVvXCf(A$s%5IPRYO-jS6fy!R^hIitlNC0{FAILw zspAzEea+o0_*=)D(3_T)yXGvFabM@~uIG+&Wkg)`y>Pqee>46x{Ap@h)YR>?$!X~! z(N;^>wnb}`_9V?r>VLFG$oFKFrr%1Rmy0fOFH^bPH}k}rgl~q=r#_t;JN5F^*HhT1 zP7jIDV$|BHm8<0+!nrEvYQ|Ngt8rH=O;t_xx5{i4+v@(RqI6r;nqP`v>%O}3PIH@Z zOs?0jS8|%k>E5YFvl4r=CzaFsU1li!Z z7IP0k_om$~}onwhgAcSQEyl$d=k?zmo3yt(`A+q2&r*ysN{c<74K*+)G`_yj1*38@zw6SZ$s?9TmT)%vGv z-+p1cmv@hS&-^vXYrP}C&*ndtKG%Qi`Qmuz`!e_I>}TCq+n=_-{NJ~KNB{LRn=oHu zu42|~Ol~`#PTcBwRlr?@s#4Sr#?BGZ-;G{y(PDEZ+ZKx zzCE(R*0E*t?zrBVy5V)%I>)@scen34?%w@b3=%!mVBW7 zvA-5O%D>(_wKtw?2dgDT3yWW4NER(x3VVpYg$ot1w=M59fEa^vrY zDaUW#p7zn;`-cyLx0Tm!<=Wc1Rlfh2Y;C~vpzDF_1LNy>igg~}_}q4&?cd`!k9~VL z^|toT_y6F>;rDCan{1=(tgLDIdU=h}m!i}BTj%cjz4`I^*tNUXmge?sJ9PO$$*-5< z`&<4SRULcm^FH$1&1>;j>(^#3-zr|>ARBG{%sSbcHC8d!`T3pmU(2G)w*O!D{dVW) zQ_olHd&FtHQ~dJet4{oxT{{Xie_p!tbjIn)duLb4$8+v0+JAm|{)bh^ufD!MXMOC; z?XUM&+Hh9}C-zu=y!Ipa{h?j0%imABr>iTr zXL@D*C+6SI|Bo-|zwAA8{)YKlcG

{yqAbT4R}68To`sNnBuO!wFUwJ%u91iQFAA z4(LLEUpNJL3u zX-P(Y5vU3F*;nVJk4{*DpN_{_PhHKE>He{kMlDyu%>#tIEHu}-y0sCFYPMw z@7%jv(zkb?JNjkOl2@v}mnUsuU3iF@Kg7f1ODlU^g_F~xUi-uG4e|&0HH3n^SBYKf zT43he;I=TcxL^4A$zR*pI802`JK7IY&rz3~7 zdGfgB86VtL>SbQJ*d&f+4u8X+P_HE!(N>pIZM|D>O%}R(?%8Kg)9@Y6-xc>>7cmlF z@T%Uh&|KncWk;>kR?aPJ?H-3N3N73#npwqg;=+W9tp(TKKT*G58fGQo_FS`XK~}x; zy7P{f?#2TgP@zQBToLwwn9SmAkvz_MiQ(q+;G>apO{vS8Kalt;UWo z_u527^Y6EME}kS5vP#v*=gjJzJB|G2y*V~jo4H`qUxUxnx6YX;-L{1Lzif=IgQ;Ln zk8&5U#Jk8(r)JF7e)RCL>6&$6hL$^fT7N2Sou06(xkHKh;WOL4?@|NhCuOy+*vB!y zjrY6K;@k9nn8~W2h+KQE`cs}PSI0d3o5^TReJK5i@){XV~v_=ku0~3Ikx?4 zh~2?+c-2Pj)+G{t=PofU3S4H^@;GAG8kbj7qTP2H^enJBy45(!fAQI z>HnUI9QtLn>z_YPj zt9G}{px4$SF`iL}ezEOomG&r~-#6`Y&AC)6Ms%Xs?o-wbg!Kt6${PGj? zAc>2OEm|8cxh}bzSMk|Cv$jy?z4y=V2SF3BnAeGmhN?tc9NT0f1C?=i za$@h<&7U4~ZOX-maxc$CPEp)3Z{m@K245$=-1;+aQq)KDcL6)j_kB&;@_L1C@4=Vy zO`Z-5cOJ;_T(#};XC2YxCo$%3ZPkUDOZc~WatNgSc0cfSbwS^kgV8$=UWs=)C3)lJ ztYgIqF9l7ne0wybY2lQ&H@uoMRnJORJ>Ixrv8)ltnum_zwZA@cmVT`1HwxYJzS?P0 zz?+qN+fP=l(#n5n_VxFzGy4ySE)JaMTKX}4hdYB^XH z)80}%XMe9sQeyclx9=;nBj)|%+q7X}Z&{V^+aHT&NKCikQocSRN#4J2t-NRW;|+sTQSQJ0kN;+$zDxJQ84oit1_lNO MPgg&ebxsLQ0L+(v)Bpeg diff --git a/doc/html/index.html b/doc/html/index.html index 298875d..24277e1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -8,16 +8,16 @@ - - - - - - - -
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+ + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore


-
Next
+
Next

@@ -27,7 +27,7 @@

- - + +

Last revised: May 29, 2007 at 06:31:03 GMT

Last revised: February 12, 2008 at 22:47:14 GMT


-
Next
+
Next
diff --git a/doc/optional.html b/doc/optional.html deleted file mode 100644 index b9ef36b..0000000 --- a/doc/optional.html +++ /dev/null @@ -1,1803 +0,0 @@ - - - - - - - - - - -Header - - - -

Header <boost/optional/optional.hpp>

- -

Contents

-
-
Motivation
-
Development
-
Synopsis
-
Semantics
-
Examples
-
Optional references
-
Rebinding semantics for assignment of optional references
-
none_t and none
-
In-Place Factories
-
A note about optional<bool>
-
Exception Safety Guarantees
-
Type requirements
-
Implementation Notes
-
Dependencies and Portability
-
Acknowledgment
-
- -
- -

Motivation

- -

Consider these functions which should return a value but which might not have - a value to return:

-
(A) double sqrt(double n );
-(B) char get_async_input();
-(C) point polygon::get_any_point_effectively_inside();
-

There are different approaches to the issue of not having a value to return.

-

A typical approach is to consider the existence of a valid return value as - a postcondition, so that if the function cannot compute the value to return, - it has either undefined behavior (and can use assert in a debug build) - or uses a runtime check and throws an exception if the postcondition is violated. - This is a reasonable choice for example, for function (A), because the - lack of a proper return value is directly related to an invalid parameter (out - of domain argument), so it is appropriate to require the callee to supply only - parameters in a valid domain for execution to continue normally.

-

However, function (B), because of its asynchronous nature, does not fail just - because it can't find a value to return; so it is incorrect to consider - such a situation an error and assert or throw an exception. This function must - return, and somehow, must tell the callee that it is not returning a meaningful - value.

-

A similar situation occurs with function (C): it is conceptually an error to - ask a null-area polygon to return a point inside itself, but in many - applications, it is just impractical for performance reasons to treat this as - an error (because detecting that the polygon has no area might be too expensive - to be required to be tested previously), and either an arbitrary point (typically - at infinity) is returned, or some efficient way to tell the callee that there - is no such point is used.

-

There are various mechanisms to let functions communicate that the returned - value is not valid. One such mechanism, which is quite common since it has zero - or negligible overhead, is to use a special value which is reserved to communicate - this. Classical examples of such special values are EOF, string::npos, points - at infinity, etc...

-

When those values exist, i.e. the return type can hold all meaningful values - plus the signal value, this mechanism is quite appropriate and - well known. Unfortunately, there are cases when such values do not exist. In - these cases, the usual alternative is either to use a wider type, such as 'int' - in place of 'char'; or a compound type, such as std::pair<point,bool>. -

-

Returning a std::pair<T,bool>, thus attaching a boolean flag to the result - which indicates if the result is meaningful, has the advantage that can be turned - into a consistent idiom since the first element of the pair can be whatever - the function would conceptually return. For example, the last two functions - could have the following interface:

-
std::pair<char,bool> get_async_input();
-std::pair<point,bool> polygon::get_any_point_effectively_inside();
-

These functions use a consistent interface for dealing with possibly inexistent - results:

-
std::pair<point,bool> p = poly.get_any_point_effectively_inside();
-if ( p.second )
-  flood_fill(p.first);
-
- -

However, not only is this quite a burden syntactically, it is also error - prone since the user can easily use the function result (first element of the - pair) without ever checking if it has a valid value.

-

Clearly, we need a better idiom.

- -

Development

- -

The models:

-

In C++, we can declare an object (a variable) of type T, and we can give this variable - an initial value (through an initializer. (c.f. 8.5)).
- When a declaration includes a non-empty initializer (an initial value is given), it is said that - the object has been initialized.
- If the declaration uses an empty initializer (no initial value is given), - and neither default nor value initialization applies, it is said that the object is - uninitialized. Its actual value exist but has an - indeterminate initial value (c.f. 8.5.9).
- optional<T> intends to formalize the notion of initialization -(or lack of it) - allowing a program to test whether an object has been initialized and stating that access to - the value of an uninitialized object is undefined behavior. That is, - when a variable is declared as optional<T> and no initial value is given, - the variable is formally uninitialized. A formally uninitialized optional object has conceptually - no value at all and this situation can be tested at runtime. It is formally -undefined behavior - to try to access the value of an uninitialized optional. An uninitialized optional can be assigned a value, in which case its initialization state changes to initialized. Furthermore, given the formal - treatment of initialization states in optional objects, it is even possible to reset an optional to uninitialized.

-

In C++ there is no formal notion of uninitialized objects, which - means that objects always have an initial value even if indeterminate.
- As discussed on the previous section, this has a drawback because you need additional - information to tell if an object has been effectively initialized.
- One of the typical ways in which this has been historically - dealt with is via a special value: EOF,npos,-1, etc... This is equivalent to adding - the special value to the set of possible values of a given type. This super set of - T plus some nil_t—were nil_t is some stateless POD-can be modeled in modern - languages as a discriminated union of T and nil_t. - Discriminated unions are often called variants. A variant has a current type, - which in our case is either T or nil_t.
- Using the Boost.Variant library, this model can be implemented - in terms of boost::variant<T,nil_t>.
- There is precedent for a discriminated union as a model for an optional value: the - Haskell Maybe built-in type constructor. -Thus, a discriminated union T+nil_t serves as a conceptual foundation.

-

A variant<T,nil_t> follows naturally from the traditional idiom of extending -the range of possible values adding an additional sentinel value with the special meaning of Nothing. -However, this additional Nothing value is largely irrelevant for our purpose - since our goal is to formalize the notion of uninitialized objects and, while a special extended value can be used to convey that meaning, it is not strictly -necessary in order to do so.

-

The observation made in the last paragraph about the irrelevant nature of the additional nil_t with respect to -purpose of optional<T> suggests -an alternative model: a container that either has a value of T or nothing. -

-

As of this writing I don't know of any precedent for a variable-size fixed-capacity (of 1) -stack-based container model for optional values, yet I believe this is the consequence of -the lack of practical implementations of such a container rather than an inherent shortcoming -of the container model.

-

In any event, both the discriminated-union or the single-element container models serve as a conceptual -ground for a class representing optional—i.e. possibly uninitialized—objects.
-For instance, these models show the exact semantics required for a wrapper of optional values:

-

Discriminated-union:

-
-
  • deep-copy semantics: copies of the variant implies copies of the value.
  • -
  • deep-relational semantics: comparisons between variants matches both current types and values
  • -
  • If the variant's current type is T, it is modeling an initialized optional.
  • -
  • If the variant's current type is not T, it is modeling an uninitialized optional.
  • -
  • Testing if the variant's current type is T models testing if the optional is initialized
  • -
  • Trying to extract a T from a variant when its current type is not T, models the undefined -behavior -of trying to access the value of an uninitialized optional
  • -
    -

    Single-element container:

    -
    -
  • deep-copy semantics: copies of the container implies copies of the value.
  • -
  • deep-relational semantics: comparisons between containers compare container size and if match, contained value
  • -
  • If the container is not empty (contains an object of type T), it is modeling an initialized optional.
  • -
  • If the container is empty, it is modeling an uninitialized optional.
  • -
  • Testing if the container is empty models testing if the optional is initialized
  • -
  • Trying to extract a T from an empty container models the undefined behavior -of trying to access the value of an uninitialized optional
  • -
    - -

    The semantics:

    -

    Objects of type optional<T> are intended to be used in places where objects of type T would -but which might be uninitialized. Hence, optional<T>'s purpose is to formalize the -additional possibly uninitialized state.
    -From the perspective of this role, optional<T> can have the same operational semantics of T -plus the additional semantics corresponding to this special state.
    -As such, optional<T> could be thought of as a supertype of T. Of course, -we can't do that in C++, so we need to compose the desired semantics using a different mechanism.
    -Doing it the other way around, that is, making optional<T> a subtype of T is not only -conceptually wrong but also impractical: it is not allowed to derive from a non-class type, such as a -built-in type.

    - -

    We can draw from the purpose of optional<T> the required basic semantics:

    - -
    -

    Default Construction: To introduce a formally uninitialized wrapped -object.

    - -

    Direct Value Construction via copy: To introduce a formally -initialized wrapped object whose value is obtained as a copy of some object.

    - -

    Deep Copy Construction: To obtain a new yet equivalent wrapped -object.

    - -

    Direct Value Assignment (upon initialized): To assign a value to the wrapped object.

    - -

    Direct Value Assignment (upon uninitialized): To initialize the wrapped object -with a value obtained -as a copy of some object.

    - -

    Assignment (upon initialized): To assign to the wrapped object the value -of another wrapped object.

    - -

    Assignment (upon uninitialized): To initialize the wrapped object -with value of another wrapped object.

    - -

    Deep Relational Operations (when supported by the type T): To compare -wrapped object values taking into account the presence of uninitialized -states.

    - -

    Value access: To unwrap the wrapped object.

    - -

    Initialization state query: To determine if the object is formally -initialized or not.

    - -

    Swap: To exchange wrapped objects. (with whatever exception safety -guarantees are provided by T's swap).

    - -

    De-initialization: To release the wrapped object (if any) and leave -the wrapper in the uninitialized state.

    - -
    - -

    Additional operations are useful, such as converting constructors and -converting assignments, in-place construction and assignment, and safe value -access via a pointer to the wrapped object or null.

    -

    The Interface:

    -

    Since the purpose of optional is to allow us to use objects with a formal -uninitialized additional state, the interface could try to follow the interface -of the underlying T type as much as possible. In order to choose the proper -degree of adoption of the native T interface, the following must be noted:
    -Even if all the operations supported by an instance of type T are defined for -the entire range of values for such a type, an optional<T> extends such a set of -values with a new value for which most (otherwise valid) operations are not -defined in terms of T.
    -Furthermore, since optional<T> itself is merely a T wrapper (modeling a T -supertype), any attempt to define such operations upon uninitialized optionals -will be totally artificial w.r.t. T.
    -This library chooses an interface which follows from T's interface only for -those operations which are well defined (w.r.t the type T) even if any of the -operands are uninitialized. These operations include: construction, -copy-construction, assignment, swap and relational operations.
    -For the value access operations, which are undefined (w.r.t the type T) when the -operand is uninitialized, a different interface is chosen (which will be -explained next).
    -Also, the presence of the possibly uninitialized state requires additional -operations not provided by T itself which are supported by a special interface.

    -

    Lexically-hinted Value Access in the presence of possibly untitialized -optional objects: The operators * and ->

    -

    A relevant feature of a pointer is that it can have a null - pointer value. This is a special value which is used to indicate that the - pointer is not referring to any object at all. In other words, null pointer - values convey the notion of inexistent objects.

    -

    This meaning of the null pointer value allowed pointers to became a de facto standard - for handling optional objects because all you have to do to refer to a value which you - don't really have is to use a null pointer value of the appropriate type. - Pointers have been used for decades—from the days of C APIs to modern C++ libraries—to - refer to optional (that is, possibly inexistent) objects; particularly - as optional arguments to a function, but also quite often as optional data members.

    -

    The possible presence of a null pointer value makes the operations that access the - pointee's value possibly undefined, therefore, expressions which use dereference - and access operators, such as: ( *p = 2 ) and ( p->foo()), - implicitly convey the notion of optionality, and this information is tied to - the syntax of the expressions. That is, the presence of operators * and -> tell by - themselves—without any additional context—that the expression will be undefined unless - the implied pointee actually exist.

    -

    Such a de facto idiom for referring to optional objects can be formalized in the form of a -concept: the OptionalPointee concept.
    -This concept captures the syntactic usage of operators *, -> and conversion to bool to convey -the notion of optionality.

    -

    However, pointers are good to refer to optional objects, but not particularly good -to handle the optional objects in all other respects, such as initializing or moving/copying -them. The problem resides in the shallow-copy of pointer semantics: if you need to - effectively move or copy the object, pointers alone are not enough. The problem - is that copies of pointers do not imply copies of pointees. For example, as - was discussed in the motivation, pointers alone cannot be used to return optional - objects from a function because the object must move outside from the function and - into the caller's context.
    - A solution to the shallow-copy problem that is often used is to resort to dynamic - allocation and use a smart pointer to automatically handle the details of this. - For example, if a function is to optionally return an object X, it can use shared_ptr<X> - as the return value. However, this requires dynamic allocation of X. If X is - a built-in or small POD, this technique is very poor in terms of required resources. - Optional objects are essentially values so it is very convenient to be able to use automatic - storage and deep-copy semantics to manipulate optional values just as we do with ordinary - values. Pointers do not have this semantics, so are inappropriate for the initialization and - transport of optional values, yet are quite convenient for handling the access to the - possible undefined value because of the idiomatic aid present in the OptionalPointee - concept incarnated by pointers. -

    -

    Optional<T> as a model of OptionalPointee

    -

    For value access operations optional<> uses operators * and -> to lexically -warn about the possibly uninitialized state appealing to the familiar pointer -semantics w.r.t. to null pointers.
    -However, it is particularly important to note that optional<> objects are not pointers. optional<> -is not, and does not model, a pointer. -

    For instance, optional<> does not have shallow-copy so does not alias: two different optionals - never refer to the same value unless T itself is a reference (but may have equivalent values).
    - The difference between an optional<T> and a pointer must be kept in mind, particularly - because the semantics of relational operators are different: since optional<T> - is a value-wrapper, relational operators are deep: they compare optional values; - but relational operators for pointers are shallow: they do not compare pointee values.
    - As a result, you might be able to replace optional<T> by T* on some situations but - not always. Specifically, on generic code written for both, you cannot use relational - operators directly, and must use the template functions - equal_pointees() and - less_pointees() instead. -


    - -

    Synopsis

    - -
    namespace boost {
    -
    -template<class T>
    -class optional
    -{
    -  public :
    -
    -    (If T is of reference type, the parameters and results by reference are by value)
    -
    -    optional () ;
    -
    -    optional ( none_t ) ;
    -
    -    optional ( T const& v ) ;
    -
    -    optional ( bool condition, T const& v ) ;  [new in 1.34]
    -    
    -    optional ( optional const& rhs ) ;
    -
    -    template<class U> explicit optional ( optional<U> const& rhs ) ;
    -
    -    template<InPlaceFactory> explicit optional ( InPlaceFactory const& f ) ;
    -
    -    template<TypedInPlaceFactory> explicit optional ( TypedInPlaceFactory const& f ) ;
    -
    -    optional& operator = ( none_t ) ;
    -
    -    optional& operator = ( T const& v ) ;
    -
    -    optional& operator = ( optional const& rhs ) ;
    -
    -    template<class U> optional& operator = ( optional<U> const& rhs ) ;
    -
    -    template<InPlaceFactory> optional& operator = ( InPlaceFactory const& f ) ;
    -
    -    template<TypedInPlaceFactory> optional& operator = ( TypedInPlaceFactory const& f ) ;
    -
    -    T const& get() const ;
    -    T&       get() ;
    -
    -    T const& get_value_or( T const& default ) const ;  [new in 1.34]
    -    
    -    T const* operator ->() const ;
    -    T*       operator ->() ;
    -
    -    T const& operator *() const ;
    -    T&       operator *() ;
    -
    -    T const* get_ptr() const ;
    -    T*       get_ptr() ;
    -
    -    operator unspecified-bool-type() const ;
    -
    -    bool operator!() const ;
    -
    -    deprecated methods
    -
    -    void reset() ; (deprecated)
    -    void reset ( T const& ) ; (deprecated)
    -    bool is_initialized() const ; (deprecated)
    -
    -} ;
    -
    -template<class T> inline bool operator == ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator != ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator <  ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator >  ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator <= ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator >= ( optional<T> const& x, optional<T> const& y ) ;
    -
    -template<class T> inline bool operator == ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator != ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <  ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >  ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <= ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >= ( optional<T> const& x, T const& n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator == ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator != ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <  ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >  ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <= ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >= ( T const& n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator == ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator != ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <  ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >  ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <= ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >= ( optional<T> const& x, none_t n ) ; [new in 1.34]
    -
    -template<class T> inline bool operator == ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator != ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <  ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >  ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator <= ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline bool operator >= ( none_t n, optional<T> const& y ) ; [new in 1.34]
    -
    -template<class T> inline optional<T> make_optional ( T const& v ) ;  [new in 1.34]
    -
    -template<class T> inline optional<T> make_optional ( bool condition, T const& v ) ;  [new in 1.34]
    -
    -template<class T> inline T const& get_optional_value_or ( optional<T> const& opt, T const& default ) ;  [new in 1.34]
    -
    -template<class T> inline T const& get ( optional<T> const& opt ) ;
    -
    -template<class T> inline T& get ( optional<T> & opt ) ;
    -
    -template<class T> inline T const* get ( optional<T> const* opt ) ;
    -
    -template<class T> inline T* get ( optional<T>* opt ) ;
    -
    -template<class T> inline T const* get_pointer ( optional<T> const& opt ) ;
    -
    -template<class T> inline T* get_pointer ( optional<T> & opt ) ;
    -
    -template<class T> inline void swap( optional<T>& x, optional<T>& y ) ;
    -
    -} // namespace boost
    -
    - -
    - -

    Detailed Semantics

    - -

    NOTES:

    - -

    Because T might be of reference type, in the sequel, those entries whose -semantic depends on T being of reference type or not will be distinguished using -the following convention:
    -If the entry reads: optional<T (not a ref)>, the description corresponds only to -the case where T is not of reference type.
    -If the entry reads: optional<T&>, the description corresponds only to the case -where T is of reference type.
    -If the entry reads: optional<T>, the description is the same for both cases.

    - -

    The following section contains various assert() which are used only to -show the postconditions as sample code. It is not implied that the type T must -support each particular expression but that if the expression is supported, the -implied condition holds.

    - -
    - -
    optional<T>::optional();
    -
    -

    Effect: Default-Constructs an optional.

    -

    Postconditions: *this is uninitialized.

    -

    Throws: Nothing.

    -

    Notes: T's default constructor is not called.

    -

    Example:

    -
    -
    optional<T> def ;
    -assert ( !def ) ;
    -
    -
    - -
    - -
    optional<T>::optional( none_t );
    -
    -

    Effect: Constructs an optional uninitialized.

    -

    Postconditions: *this is uninitialized.

    -

    Throws: Nothing.

    -

    Notes:

    -
    -

    T's default constructor is not called.
    -The -expression boost::none denotes an instance of boost::none_t that can be -used as the parameter.

    -
    -

    Example:

    -
    -
    -#include <boost/none.hpp>
    -optional<int> n(boost::none) ;
    -assert ( !n ) ;
    -
    -
    -
    - -
    - -
    optional<T (not a ref)>::optional( T const& v )
    -
    -

    Effect: Directly-Constructs an optional.

    -

    Postconditions: *this is initialized and its value is a copy of 'v'.

    -

    Throws: Whatever T::T( T const& ) throws.

    -

    Notes: T::T( T const& ) is called.

    -

    Exception Safety: Exceptions can only be thrown during T::T( T const& ); -in that case, this constructor has no effect. -

    -

    Example:

    -
    -
    -T v;
    -optional<T> opt(v);
    -assert ( *opt == v ) ;
    -
    -
    -
    - -
    - -
    optional<T&>::optional( T& ref )
    -
    -

    Effect: Directly-Constructs an optional.

    -

    Postconditions: *this is initialized and its value is an -instance of an internal type wrapping the reference 'ref'.

    -

    Throws: Nothing.

    -

    Example:

    -
    -
    -T v;
    -T& vref = v ;
    -optional<T&> opt(vref);
    -assert ( *opt == v ) ;
    -++ v ; // mutate referee
    -assert (*opt == v); 
    -
    -
    -
    - -
    - -
    optional<T (not a ref)>::optional( bool condition, T const& v ) ;
    -optional<T&>           ::optional( bool condition, T&       v ) ;
    -
    - -
    -

    If condition is true, same as:

    -
    optional<T (not a ref)>::optional( T const& v )
    -optional<T&>           ::optional( T&       v )
    -
    -

    otherwise, same as:

    -
    -optional<T (not a ref)>::optional()
    -optional<T&>           ::optional()
    -
    -
    - -
    - -
    optional<T (not a ref)>::optional( optional const& rhs );
    -
    -

    Effect: Copy-Constructs an optional.

    -

    Postconditions: If rhs is initialized, *this is initialized -and its value is a copy of the value of rhs; else *this -is uninitialized.

    -

    Throws: Whatever T::T( T const& ) throws.

    -

    Notes: If rhs is initialized, T::T(T const& ) is called.

    -

    Exception Safety: Exceptions can only be thrown during T::T( T const& ); -in that case, this constructor has no effect. -

    -

    Example:

    -
    -
    -optional<T> uninit ;
    -assert (!uninit);
    -
    -optional<T> uinit2 ( uninit ) ;
    -assert ( uninit2 == uninit );
    -
    -optional<T> init( T(2) );
    -assert ( *init == T(2) ) ;
    -
    -optional<T> init2 ( init ) ;
    -assert ( init2 == init ) ;
    -
    - -
    -
    - -
    - -
    optional<T&>::optional( optional const& rhs );
    -
    -

    Effect: Copy-Constructs an optional.

    -

    Postconditions: If rhs is initialized, *this is initialized -and its value is another reference to the same object referenced by *rhs; else *this -is uninitialized.

    -

    Throws: Nothing.

    -

    Notes: If rhs is initialized, both *this and *rhs will -reefer to the same object (they alias).

    -

    Example:

    -
    -
    -optional<T&> uninit ;
    -assert (!uninit);
    -
    -optional<T&> uinit2 ( uninit ) ;
    -assert ( uninit2 == uninit );
    -
    -T v = 2 ; T& ref = v ;
    -optional<T> init(ref);
    -assert ( *init == v ) ;
    -
    -optional<T> init2 ( init ) ;
    -assert ( *init2 == v ) ;
    -
    -v = 3 ;
    -
    -assert ( *init  == 3 ) ;
    -assert ( *init2 == 3 ) ;
    -
    -
    -
    - -
    -
    - -
    - -
    template<U> explicit optional<T (not a ref)>::optional( optional<U> const& rhs );
    -
    -

    Effect: Copy-Constructs an optional.

    -

    Postconditions: If rhs is initialized, *this is initialized - and its value is a copy of the value of rhs converted - to type T; else *this is uninitialized. -

    -

    Throws: Whatever T::T( U const& ) throws.

    -

    Notes: T::T( U const& ) is called if rhs is initialized, which requires -a valid conversion from U to T. -

    -

    Exception Safety: Exceptions can only be thrown during T::T( U const& ); -in that case, this constructor has no effect. -

    -

    Example:

    -
    - -
    -optional<double> x(123.4);
    -assert ( *x == 123.4 ) ;
    -
    -optional<int> y(x) ;
    -assert( *y == 123 ) ;
    -
    -
    -
    - -
    - -
    template<InPlaceFactory> explicit optional<T (not a ref)>::optional( InPlaceFactory const& f );
    - -
    template<TypedInPlaceFactory> explicit optional<T (not a ref)>::optional( TypedInPlaceFactory const& f );
    -
    -

    Effect: Constructs an optional with a value of T obtained from -the factory.

    -

    Postconditions:  *this is initialized and its value is -directly given from the factory 'f' (i.e., the value is not copied).

    -

    Throws: Whatever the T constructor called by the factory throws.

    -

    Notes: See In-Place Factories

    -

    Exception Safety: Exceptions can only be thrown during the call to the -T constructor used by the factory; -in that case, this constructor has no effect. -

    -

    Example:

    -
    - -
    -class C { C ( char, double, std::string ) ; } ;
    -
    -C v('A',123.4,"hello");
    -
    -optional<C> x( in_place   ('A', 123.4, "hello") ); // InPlaceFactory used
    -optional<C> y( in_place<C>('A', 123.4, "hello") ); // TypedInPlaceFactory used
    -
    -assert ( *x == v ) ;
    -assert ( *y == v ) ;
    -
    -
    -
    -
    - -
    - -
    optional& optional<T>::operator= ( none_t n ) ;
    -
    -

    Effect: Same as opeator=(optional const& rhs), when rhs is default-constructed (uninitialized).

    -

    Postconditions: *this is uninitialized

    -

    Example:

    -
    -
    -#include <boost/none.hpp>
    -
    -optional<int> def ;
    -optional<int> opt(123) ;
    -
    -opt = boost::none ;
    -
    -assert ( opt == def ) ;
    -
    -
    -
    - -
    - -
    optional& optional<T (not a ref)>::operator= ( T const& rhs ) ;
    -
    -

    Effect: Assigns the value 'rhs' to an optional.

    -

    Postconditions: *this is initialized -and its value is a copy of rhs.

    -

    Throws: Whatever T::operator=( T const& ) or T::T(T const&) throws.

    -

    Notes: If *this was initialized, T's assignment operator is -used, otherwise, its copy-constructor is used.

    -

    Exception Safety: In the event of an exception, the initialization -state of *this is unchanged and its value unspecified as far as optional -is concerned (it is up to T's operator=()) [If *this is initially -uninitialized and T's copy constructor fails, *this is left -properly uninitialized]

    -

    Example:

    -
    -
    -T x;
    -optional<T> def ;
    -optional<T> opt(x) ;
    -
    -T y;
    -def = y ;
    -assert ( *def == y ) ;
    -opt = y ;
    -assert ( *opt == y ) ;
    -
    -
    - -
    - -
    optional<T&>& optional<T&>::operator= ( T& const& rhs ) ;
    -
    -

    Effect: (Re)binds thee wrapped reference.

    -

    Postconditions: *this is initialized -and it references the same object referenced by rhs.

    -

    Notes: If *this was initialized, is is rebound to the -new object. See here for details on this behavior.

    -

    Example:

    -
    -
    -int a = 1 ;
    -int b = 2 ;
    -T& ra = a ;
    -T& rb = b ;
    -optional<int&> def ;
    -optional<int&> opt(ra) ;
    -
    -def = rb ; // binds 'def' to 'b' through 'rb'
    -assert ( *def == b ) ;
    -*def = a ; // changes the value of 'b' to a copy of the value of 'a'
    -assert ( b == a ) ;
    -int c = 3;
    -int& rc = c ;
    -opt = rc ; // REBINDS to 'c' through 'rc'
    -c = 4 ;
    -assert ( *opt == 4 ) ;
    -
    -
    -
    - -
    - -
    optional& optional<T (not a ref)>::operator= ( optional const& rhs ) ;
    -
    -

    Effect: Assigns another optional to an optional.

    -

    Postconditions: If rhs is initialized, *this is initialized -and its value is a copy of the value of rhs; else *this -is uninitialized. -

    -

    Throws: Whatever T::operator( T const&) or  T::T( T const& ) throws.

    -

    Notes: If both *this and rhs are initially initialized, -T's assignment operator is used. If *this is initially initialized but -rhs is uninitialized, T's destructor is called. If *this is initially -uninitialized but rhs is initialized, T's copy constructor is called. -

    -

    Exception Safety: In the event of an exception, the initialization -state of *this is unchanged and its value unspecified as far as optional -is concerned (it is up to T's operator=()) [If *this is initially -uninitialized and T's copy constructor fails, *this is left -properly uninitialized]

    -

    Example:

    -
    -
    T v;
    -optional<T> opt(v);
    -optional<T> def ;
    -
    -opt = def ;
    -assert ( !def ) ;
    -// previous value (copy of 'v') destroyed from within 'opt'.
    -
    -
    -
    -
    - -
    - -
    optional<T&> & optional<T&>::operator= ( optional<T&> const& rhs ) ;
    -
    -

    Effect: (Re)binds thee wrapped reference.

    -

    Postconditions: If *rhs is initialized, *this is initialized -and it references the same object referenced by *rhs; otherwise, *this -is uninitialized (and references no object).

    -

    Notes: If *this was initialized and so is *rhs, this -is is rebound to the new object. See here for details on this -behavior.

    -

    Example:

    -
    -
    int a = 1 ;
    -int b = 2 ;
    -T& ra = a ;
    -T& rb = b ;
    -optional<int&> def ;
    -optional<int&> ora(ra) ;
    -optional<int&> orb(rb) ;
    -
    -def = orb ; // binds 'def' to 'b' through 'rb' wrapped within 'orb'
    -assert ( *def == b ) ;
    -*def = ora ; // changes the value of 'b' to a copy of the value of 'a'
    -assert ( b == a ) ;
    -int c = 3;
    -int& rc = c ;
    -optional<int&> orc(rc) ;
    -ora = orc ; // REBINDS ora to 'c' through 'rc'
    -c = 4 ;
    -assert ( *ora == 4 ) ;
    -
    -
    -
    - -
    - -
    template<U> optional& optional<T (not a ref)>::operator= ( optional<U> const& rhs ) ;
    -
    -

    Effect: Assigns another convertible optional to an optional.

    -

    Postconditions: If rhs is initialized, *this is initialized -and its value is a copy of the value of rhs converted -to type T; else *this is uninitialized. -

    -

    Throws: Whatever T::operator=( U const& ) or T::T( U const& ) throws.

    -

    Notes: If both *this and rhs are initially initialized, -T's assignment operator (from U) is used. If *this is initially initialized but -rhs is uninitialized, T's destructor is called. If *this is initially -uninitialized but rhs is initialized, T's converting constructor (from U) is called. -

    -

    Exception Safety: In the event of an exception, the initialization -state of *this is unchanged and its value unspecified as far as optional -is concerned (it is up to T's operator=()) [If *this is initially -uninitialized and T's converting constructor fails, *this is left -properly uninitialized]

    -

    Example:

    -
    -
    T v;
    -optional<T> opt0(v);
    -optional<U> opt1;
    -
    -opt1 = opt0 ;
    -assert ( *opt1 == static_cast<U>(v) ) ;
    -
    -
    -
    - -
    -
    void optional<T (not a ref)>::reset( T const& v ) ;
    -
    -

    Deprecated: same as operator= ( T const& v) ;

    -
    - -
    -
    void optional<T>::reset() ;
    -
    -

    Deprecated: Same as operator=( none_t n);

    -
    - -
    - -
    T const& optional<T (not a ref)>::operator*() const ;
    -T&       optional<T (not a ref)>::operator*();
    - -
    T const& optional<T (not a ref)>::get() const ;
    -T&       optional<T (not a ref)>::get() ;
    -
    -inline T const& get ( optional<T (not a ref)> const& ) ;
    -inline T&       get ( optional<T (not a ref)> &) ;
    -
    -
    -

    Requirements: *this is initialized

    -

    Returns: A reference to the contained value

    -

    Throws: Nothing.

    -

    Notes: The requirement is asserted via BOOST_ASSERT().

    -

    Example:

    -
    -
    T v ;
    -optional<T> opt ( v );
    -T const& u = *opt;
    -assert ( u == v ) ;
    -T w ;
    -*opt = w ;
    -assert ( *opt == w ) ;
    -
    -
    -
    
    -
    - -
    - - -
    T const& optional<T&>::operator*() const ;
    -T      & optional<T&>::operator*();
    - -
    T const& optional<T&>::get() const ;
    -T&       optional<T&>::get() ;
    -
    -inline T const& get ( optional<T&> const& ) ;
    -inline T&       get ( optional<T&> &) ;
    -
    -
    -

    Requirements: *this is initialized

    -

    Returns: The reference contained.

    -

    Throws: Nothing.

    -

    Notes: The requirement is asserted via BOOST_ASSERT().

    -

    Example:

    -
    -
    T v ;
    -T& vref = v ;
    -optional<T&> opt ( vref );
    -T const& vref2 = *opt;
    -assert ( vref2 == v ) ;
    -++ v ;
    -assert ( *opt == v ) ;
    -
    -
    - -
    - -
    T const& optional<T>::get_value_or( T const& default) const ;
    -T&       optional<T>::get_value_or( T&       default ) ;
    -
    -inline T const& get_optional_value_or ( optional<T> const& o, T const& default ) ;
    -inline T&       get_optional_value_or ( optional<T>&       o, T&       default ) ;
    -
    -
    -

    Returns: A reference to the contained value (which can be itself a reference), if any, or default

    -

    Throws: Nothing.

    -

    Example:

    -
    -
    T v, z ;
    -optional<T> def;
    -T const& y = def.get_value_or(z);
    -assert ( y == z ) ;
    -
    -optional<T> opt ( v );
    -T const& u = get_optional_value_or(opt,z);
    -assert ( u == v ) ;
    -assert ( u != z ) ;
    -
    -
    -
    
    -
    - -
    - -
    T const* optional<T>::get_ptr() const ;
    -T*       optional<T>::get_ptr() ;
    -
    -inline T const* get_pointer ( optional<T> const& ) ;
    -inline T*       get_pointer ( optional<T> &) ;
    -
    -
    -

    Returns: If *this is initialized, a pointer to the contained -value; else 0 (null). -

    -

    Throws: Nothing.

    -

    Notes: If T is a reference type, the pointer is to the referenced object

    -

    Notes: The contained value is permanently stored within *this, so -you should not hold nor delete this pointer. -

    -

    Example:

    -
    -
    int v=123;
    -optional<int> opt(v);
    -optional<int> const copt(v);
    -int* p = opt.get_ptr() ;
    -int const* cp = copt.get_ptr();
    -assert ( p == get_pointer(opt) );
    -assert ( cp == get_pointer(copt) ) ;
    -
    -int& rv = v ;
    -optional<int&> optr(rv);
    -
    -*(optr.get_ptr()) = 456 ;
    -
    -assert ( v == 456 );
    -
    -
    -
    -
    -
    - - -
    - - -
    T const* optional<T>::operator ->() const ;
    -T*       optional<T>::operator ->()       ;
    -
    -
    -

    Requirements: *this is initialized.

    -

    Returns: A pointer to the contained value.

    -

    Throws: Nothing.

    -

    Notes: If T is a reference type, the pointer is to the referenced object

    -

    Notes: The requirement is asserted via BOOST_ASSERT().

    -

    Example:

    -
    -
    struct X { int mdata ; } ;
    -X x ;
    -optional<X> opt (x);
    -opt->mdata = 2 ;
    -
    -X& rx = x ;
    -
    -optional<X&> optr (rx);
    -optr->mdata = 4 ;
    -
    -assert ( x.mdata = 4 ) 
    -
    -
    -
    -
    - - -
    - - -
    optional<T>::operator unspecified-bool-type() const ;
    -
    -

    Returns: An unspecified value which if used on a boolean context is equivalent to (get() != 0)

    -

    Throws: Nothing.

    -
    -
    optional<T> def ;
    -assert ( def == 0 );
    -optional<T> opt ( v ) ;
    -assert ( opt );
    -assert ( opt != 0 );
    -
    -
    -
    - -
    - - -
     bool optional<T>::operator!() ;
    -
    -

    Returns: If *this is uninitialized, true; else false.

    -

    Throws: Nothing.

    -

    Notes: This operator is provided for those compilers which can't use -the unspecified-bool-type operator in certain boolean contexts. -

    -

    Example:

    -
    -
    optional<T> opt ;
    -assert ( !opt );
    -*opt = some_T ;
    -
    -// Notice the "double-bang" idiom here.
    -assert ( !!opt ) ;
    -
    -
    -
    - - -
    - - -
    bool optional<T>::is_initialized() const ;
    -
    -

    Returns: true is the optional is initialized, false -otherwise.

    -

    Throws: Nothing.

    -
    -
    optional<T> def ;
    -assert ( !def.is_initialized() );
    -optional<T> opt ( v ) ;
    -assert ( opt.is_initialized() );
    -
    -
    - -
    - -
    optional<T (not a ref)> make_optional( T const& v )
    -
    -

    Returns: optional<T>(v) for the deduced type T of v.

    -

    Example:

    -
    -
    template<class T> void foo ( optional<T> const& opt ) ;
    -
    -foo ( make_optional(1+1) ) ; // Creates an optional<int>
    -
    -
    -
    - -
    optional<T (not a ref)> make_optional( bool condition, T const& v )
    -
    -

    Returns: optional<T>(condition,v) for the deduced type T of v.

    -

    Example:

    -
    -
    optional<double> calculate_foo()
    -{
    -  double val = compute_foo();
    -  return make_optional(is_not_nan_and_finite(val),val);
    -}
    -
    -optional<double> v = calculate_foo();
    -if ( !v )
    -  error("foo wasn't computed");
    -
    -
    - -
    - - -
    bool operator == ( optional<T> const& x, optional<T> const& y );
    -
    -

    Returns: If both x and y are initialied, (*x == *y). -If only x or y is initialized, false. If both are uninitialized, true.

    -

    Throws: Nothing.

    -

    Notes: Pointers have shallow relational operators while optional has -deep relational operators. Do not use operator == directly in generic code -which expect to be given either an optional<T> or a pointer; -use equal_pointees() instead

    -

    Example:

    -
    -
    T x(12);
    -T y(12);
    -T z(21);
    -optional<T> def0 ;
    -optional<T> def1 ;
    -optional<T> optX(x);
    -optional<T> optY(y);
    -optional<T> optZ(z);
    -
    -// Identity always hold
    -assert ( def0 == def0 );
    -assert ( optX == optX );
    -
    -// Both uninitialized compare equal
    -assert ( def0 == def1 );
    -
    -// Only one initialized compare unequal.
    -assert ( def0 != optX );
    -
    -// Both initialized compare as (*lhs == *rhs)
    -assert ( optX == optY ) ;
    -assert ( optX != optZ ) ;
    -
    -
    -
    - -
    - - -
    bool operator < ( optional<T> const& x, optional<T> const& y );
    -
    -

    Returns: If y is not initialized, false. -If y is initialized and x is not initialized, true. -If both x and y are initialized, (*x < *y).

    -

    Throws: Nothing.

    -

    Notes: Pointers have shallow relational operators while optional has -deep relational operators. Do not use operator < directly in generic code -which expect to be given either an optional<T> or a pointer; -use less_pointees() instead

    -

    Example:

    -
    -
    T x(12);
    -T y(34);
    -optional<T> def ;
    -optional<T> optX(x);
    -optional<T> optY(y);
    -
    -// Identity always hold
    -assert ( !(def < def) );
    -assert ( optX == optX );
    -
    -// Both uninitialized compare equal
    -assert ( def0 == def1 );
    -
    -// Only one initialized compare unequal.
    -assert ( def0 != optX );
    -
    -// Both initialized compare as (*lhs == *rhs)
    -assert ( optX == optY ) ;
    -assert ( optX != optZ ) ;
    -
    -
    -
    - -
    -
    bool operator != ( optional<T> const& x, optional<T> const& y );
    -
    -
    -

    Returns: !( x == y );

    -

    Throws: Nothing.

    -
    - -
    -
    bool operator > ( optional<T> const& x, optional<T> const& y );
    -
    -
    -

    Returns: ( y < x );

    -

    Throws: Nothing.

    -
    - -
    -
    bool operator <= ( optional<T> const& x, optional<T> const& y );
    -
    -
    -

    Returns: !( y<x );

    -

    Throws: Nothing.

    -
    - -
    -
    bool operator >= ( optional<T> const& x, optional<T> const& y );
    -
    -
    -

    Returns: !( x<y );

    -

    Throws: Nothing.

    -
    - -
    -
    -bool operator == ( optional<T> const& x, T const& n );
    -bool operator != ( optional<T> const& x, T const& n );
    -bool operator <  ( optional<T> const& x, T const& n );
    -bool operator >  ( optional<T> const& x, T const& n );
    -bool operator <= ( optional<T> const& x, T const& n );
    -bool operator >= ( optional<T> const& x, T const& n );
    -bool operator == ( T const& n, optional<T> const& y );
    -bool operator != ( T const& n, optional<T> const& y );
    -bool operator <  ( T const& n, optional<T> const& y );
    -bool operator >  ( T const& n, optional<T> const& y );
    -bool operator <= ( T const& n, optional<T> const& y );
    -bool operator >= ( T const& n, optional<T> const& y );
    -
    -
    -

    Returns: The result obtained by replacing the argument 'n' by optional<T>(n).

    -
    - -
    -
    -bool operator == ( optional<T> const& x, none_t n );
    -bool operator != ( optional<T> const& x, none_t n );
    -bool operator <  ( optional<T> const& x, none_t n );
    -bool operator >  ( optional<T> const& x, none_t n );
    -bool operator <= ( optional<T> const& x, none_t n );
    -bool operator >= ( optional<T> const& x, none_t n );
    -bool operator == ( none_t n, optional<T> const& y );
    -bool operator != ( none_t n, optional<T> const& y );
    -bool operator <  ( none_t n, optional<T> const& y );
    -bool operator >  ( none_t n, optional<T> const& y );
    -bool operator <= ( none_t n, optional<T> const& y );
    -bool operator >= ( none_t n, optional<T> const& y );
    -
    -
    -

    Returns: The result obtained by replacing the argument 'n' by optional<T>().

    -
    -
    - -
    void swap ( optional<T>& x, optional<T>& y );
    - -
    -

    Effect: If both x and y are initialized, calls swap(*x,*y) using std::swap.
    -If only one is initialized, say x, calls: y = *x; x = boost:none;
    -If none is initialized, does nothing.

    -

    Postconditions: The states of x and y interchanged.

    -

    Throws: If both are initialized, whatever swap(T&,T&) throws. -If only one is initialized, whatever T::T ( T const& ) throws.

    -

    Notes: If both are initialized, swap(T&,T&) is used unqualified but with std::swap introduced in scope.
    -If only one is initialized, T::~T() and T::T( T const& ) is called.

    -

    Exception Safety: If both are initialized, this operation has the exception -safety guarantees of swap(T&,T&).
    -If only one is initialized, it has the same basic guarantee as optional<T>::operator=( T const& ).

    -

    Example:

    -
    -
    T x(12);
    -T y(21);
    -optional<T> def0 ;
    -optional<T> def1 ;
    -optional<T> optX(x);
    -optional<T> optY(y);
    -
    -boost::swap(def0,def1); // no-op
    -
    -boost::swap(def0,optX);
    -assert ( *def0 == x );
    -assert ( !optX );
    -
    -boost::swap(def0,optX); // Get back to original values
    -
    -boost::swap(optX,optY);
    -assert ( *optX == y );
    -assert ( *optY == x );
    -
    -
    -
    -
    -
    - -

    Examples

    - -

    Optional return values

    -
    optional<char> get_async_input()
    -{
    -  if ( !queue.empty() )
    -       return optional<char>(queue.top());
    -  else return optional<char>(); // uninitialized
    -}
    -
    -void receive_async_message()
    -{
    -  optional<char> rcv ;
    -  // The safe boolean conversion from 'rcv' is used here.
    -  while ( (rcv = get_async_input()) && !timeout() )
    -    output(*rcv);
    -}
    -
    - -

    Optional local variables

    -
    optional<string> name ;
    -if ( database.open() )
    -{
    -  name = database.lookup(employer_name) ;
    -}
    -else
    -{
    -  if ( can_ask_user )
    -    name = user.ask(employer_name) ;
    -}
    -
    -if ( name )
    -     print(*name);
    -else print("employer's name not found!");
    -
    - -

    Optional data members

    -
    class figure
    -{
    -  public:
    -
    -    figure()
    -    {
    -      // data member 'm_clipping_rect' is uninitialized at this point.
    -    }
    -
    -    void clip_in_rect ( rect const& rect )
    -      {
    -         ....
    -         m_clipping_rect = rect ; // initialized here.
    -      }
    -
    -    void draw ( canvas& cvs )
    -      {
    -        if ( m_clipping_rect )
    -          do_clipping(*m_clipping_rect);
    -
    -        cvs.drawXXX(..);
    -      }
    -
    -    // this can return NULL.
    -    rect const* get_clipping_rect() { return get_pointer(m_clipping_rect); }
    -
    -  private :
    -
    -    optional<rect> m_clipping_rect ;
    -
    -};
    -
    -

    Bypassing expensive unnecessary default construction

    -
    class ExpensiveCtor { ... } ;
    -class Fred
    -{
    -  Fred() : mLargeVector(10000) {}
    -
    -  std::vector< optional<ExpensiveCtor> > mLargeVector ;
    -} ;
    -
    - -
    - -

    Optional references

    -

    This library allows the template parameter T to be of reference type: T&, and -to some extent, T const&.

    - -

    However, since references are not real objects some restrictions apply and -some operations are not available in this case:

    - -
      -
    • Converting constructors
    • -
    • Converting assignment
    • -
    • InPlace construction
    • -
    • InPlace assignment
    • -
    -

    Also, even though optional<T&> treats it wrapped pseudo-object much as a real -value, a true real reference is stored, thus aliasing can ocurr:

    - -
      -
    • Copies of optional<T&> copies the reference, but all copied references - will nonetheless reefer to the same object.
    • -
    • Value-access provides access to the referenced object rather - than the reference itself.
    • -
    • Pointer-access provides a pointer to the referenced object rather - than a pointer to the reference itself.
    • -
    - -
    -

    Rebinding semantics for assignment of optional -references

    -

    If you assign to an uninitialized optional<T&> the effect is to bind (for the first time) to the object. -Clearly, there is no other choice.

    -
    int x = 1 ;
    -int& rx = x ;
    -optional<int&> ora ;
    -optional<int&> orb(rx) ;
    -ora = orb ; // now 'ora' is bound to 'x' through 'rx'
    -*ora = 2 ; // Changes value of 'x' through 'ora'
    -assert(x==2); 
    -
    -

    If you assign to a bare C++ reference, the assignment is forwarded to the -referenced object; it's value changes but the reference is never rebound.

    -
    int a = 1 ;
    -int& ra = a ;
    -int b = 2 ;
    -int& rb = b ;
    -ra = rb ; // Changes the VALUE of 'a' to that of 'b'
    -assert(a==b);
    -b = 3 ;
    -assert(ra!=b); // 'ra' is not rebound to 'b'
    -
    -

    Now, if you assign to an initialized optional<T&>, the effect is to rebind to the new object instead of assigning the referee. This is unlike -bare C++ references.

    -
    int a = 1 ;
    -int b = 2 ;
    -int& ra = a ;
    -int& rb = b ;
    -optional<int&> ora(ra) ;
    -optional<int&> orb(rb) ;
    -ora = orb ; // 'ora' is rebound to 'b'
    -*ora = 3 ; // Changes value of 'b' (not 'a')
    -assert(a==1); 
    -assert(b==3); 
    -
    -

    Rationale:

    -

    Rebinding semantics for the assignment of initialized optional -references has been chosen to provide consistency among initialization -states even at the expense of lack of consistency with the semantics of bare -C++ references.
    -It is true that optional<U> strives to behave as much as possible as U does -whenever it is initialized; but in the case when U is T&, doing so would result -in inconsistent behavior w.r.t to the lvalue initialization state.

    -

    Consider the following code :

    -
    -int x = 1 ;
    -int& rx = x ;
    -void foo ( optional<int&> & outer )
    -{
    -  optional<int&> b(rx);
    -  outer = b ;
    -}
    -
    -

    What should the assignment to 'outer' do?
    -If 'outer' is uninitialized, the answer is clear: it should bind to 'x' (so we now have -a second reference to 'x').
    -But what if 'outer' is already initialized?
    -The assignment could change the value of the -referenced object (whatever that is), but doing that would be inconsistent with the uninitialized case -and then you wouldn't be able to reason at compile time about all the references to x since -the appearance of a new reference to it would depend on wheter the lvalue ('outer') -is initialized or not.

    -

    Arguably, if rebinding the reference to another object is wrong for your code, then is -likely that binding it for the fist time via assignment instead of intialization is also wrong. -In that case, you can always just assign the value to the referenced object directly via -the access operator *opt=value.

    -

    If rebinding is wrong but first-time binding -isn't (via assignment), you can always work around the rebinding semantics using a discriminator:

    -
    -if ( !opt )
    -      opt = value ; // first-time binding
    -else *opt = value ; // assign to referee without rebinding 
    -
    - -
    - -

    none_t and none

    -

    optional<T> supports uninitialized states with a convenient syntax via a constant of -the implementation-defined type boost::none_t, identified as boost::none.

    -

    Starting with Boost version 1.34.0, both boost::none_t and boost::none are -included in boost/none.hpp, which is automatically included by boost/optional/optional.hpp -

    -

    This contant is similar in purpose to NULL, except that is not a null pointer value. You can use it to initialize -an optional<T> instance, which has the same effect of a default constructor, and you can assign it which has the -effect of reseting the optional<T> instance. You can also use it in relational operators to make the predicate expression -more clear.

    -

    Here are some typical examples:

    -
    -#include "boost/optional/optional.hpp" // boost/none.hpp is included automatically
    -
    -boost::optional<int> foo ( int a )
    -{
    -  return some_condition(a) ? boost::make_optional(a) : boost::none ;  
    -  
    -  // NOTE: in real code you can just use this: make_optional(some_condition(a), a ) 
    -}
    -
    -boost::optional<int> opt = boost::none ;
    -
    -if ( opt == boost::none )
    -  opt = foo(123);
    -
    -opt = boost::none ;
    -
    -
    - -
    - -

    In-Place Factories

    -

    -One of the typical problems with wrappers and containers is that their -interfaces usually provide an operation to initialize or assign the contained -object as a copy of some other object. This not only requires the underlying -type to be Copy Constructible, but also requires the existence of a fully -constructed object, often temporary, just to follow the copy from:

    -
    struct X
    -{
    -  X ( int, std:::string ) ;
    -} ;
    -
    class W
    -{
    -  X wrapped_ ;
    -
    -public:
    -
    -  W ( X const& x ) : wrapped_(x) {}
    -} ;
    -
    void foo()
    -{
    -  // Temporary object created.
    -  W ( X(123,"hello") ) ;
    -}
    -
    -

    A solution to this problem is to support direct construction of the contained -object right in the container's storage.
    -In this scheme, the user only needs to supply the arguments to the constructor -to use in the wrapped object construction.

    -
    class W
    -{
    -  X wrapped_ ;
    -
    -public:
    -
    -  W ( X const& x ) : wrapped_(x) {}
    -  W ( int a0, std::string a1) : wrapped_(a0,a1) {}
    -} ;
    -
    void foo()
    -{
    -  // Wrapped object constructed in-place
    -  // No temporary created.
    -  W (123,"hello") ;
    -}
    -
    -

    A limitation of this method is that it doesn't scale well to wrapped objects with multiple -constructors nor to generic code were the constructor overloads are unknown.

    -

    The solution presented in this library is the family of InPlaceFactories and TypedInPlaceFactories.
    -These factories are a family of classes which encapsulate an increasing number of arbitrary -constructor parameters and supply a method to construct an object of a given type using those -parameters at an address specified by the user via placement new.

    -

     For example, one member of this family looks like:

    -
    template<class T,class A0, class A1>
    -class TypedInPlaceFactory2
    -{
    -  A0 m_a0 ; A1 m_a1 ;
    -
    -public:
    -
    -  TypedInPlaceFactory2( A0 const& a0, A1 const& a1 ) : m_a0(a0), m_a1(a1) {}
    -
    -  void construct ( void* p ) { new (p) T(m_a0,m_a1) ; }
    -} ;
    -
    -

    A wrapper class aware of this can use it as:

    -
    class W
    -{
    -  X wrapped_ ;
    -
    -public:
    -
    -  W ( X const& x ) : wrapped_(x) {}
    -  W ( TypedInPlaceFactory2 const& fac ) { fac.construct(&wrapped_) ; }
    -} ;
    -
    void foo()
    -{
    -  // Wrapped object constructed in-place via a TypedInPlaceFactory.
    -  // No temporary created.
    -  W ( TypedInPlaceFactory2<X,int,std::string&rt;(123,"hello")) ;
    -}
    -
    -

    The factories are divided in two groups:

      -
    • TypedInPlaceFactories: those which take the target type as a primary template parameter.
    • -
    • InPlaceFactories: those with a template construct(void*) member function taking the target type.
    • -
    -

    Within each group, all the family members differ only in the number of parameters allowed.

    -

    -

    This library provides an overloaded set of helper template functions to construct these factories -without requiring unnecessary template parameters:

    -
    template<class A0,...,class AN>
    -InPlaceFactoryN <A0,...,AN> in_place ( A0 const& a0, ..., AN const& aN) ;
    -
    -template<class T,class A0,...,class AN>
    -TypedInPlaceFactoryN <T,A0,...,AN> in_place ( T const& a0, A0 const& a0, ..., AN const& aN) ;
    - -

    In-place factories can be used generically by the wrapper and user as follows:

    -
    class W
    -{
    -  X wrapped_ ;
    -
    -public:
    -
    -  W ( X const& x ) : wrapped_(x) {}
    -
    -  template
    -  W ( InPlaceFactory const& fac ) { fac.template <X>construct(&wrapped_) ; }
    -
    -} ;
    -
    void foo()
    -{
    -  // Wrapped object constructed in-place via a InPlaceFactory.
    -  // No temporary created.
    -  W ( in_place(123,"hello") ) ;
    -}
    -
    -

    The factories are implemented in the headers: in_place_factory.hpp and typed_in_place_factory.hpp

    - -
    - -

    A note about optional<bool>

    -

    optional<bool> should be used with special caution and consideration.

    -

    First, it is functionally similar to a tristate boolean (false,maybe,true) —such as boost::tribool—except that in a tristate boolean, -the maybe state represents a valid value, unlike the corresponding state -of an uninitialized optional<bool>.
    -It should be carefully considered if an optional<bool> instead of a tribool is really needed

    -

    Second, optional<> provides a simple way to test initialization state: an implicit conversion to a type that evaluates as a 'bool' in a boolean context.
    -Using optional<bool> can lead to subtle errors due to this implicit conversion:

    -
    void foo ( bool v ) ;
    -void bar()
    -{
    -  optional<bool> v = try();
    -
    -  // The following intended to pass the value of 'v' to foo():
    -  foo(v);
    -  // But instead, the initialization state is passed
    -  // due to a typo: it should have been foo(*v).
    -}
    -
    -

    The only implicit conversion is to bool, and it is safe in the sense that typical -integral promotions don't apply (i.e. if foo() takes an 'int' instead, it won't compile).


    - -

    Exception Safety Guarantees

    - -

    Assignment:

    -

    IMPORTANT NOTE: This changed in 1.33.1 with respect to previous versions

    -

    Because of the current implementation (see Implementation Notes), all -of the assignment methods:

    -
      -
    • optional<T>::operator= ( optional<T> const& ) -
    • -
    • optional<T>::operator= ( T const& )
    • -
    • template<class U> optional<T>::operator= ( optional<U> const& ) -
    • -
    • template<class InPlaceFactory> optional<T>::operator= ( - InPlaceFactory const& )
    • -
    • template<class TypedInPlaceFactory> optional<T>::operator= ( - TypedInPlaceFactory const& )
    • -
    -

    cannot offer any exception safety guarantee beyond that provided by T::operator=( T const& )

    -

    On the other hand, the uninitializing methods:

    -
      -
    • optional<T>::operator= ( detail::none_t )
    • -
    -

    Provides the no-throw guarantee (assuming a no-throw T::~T()) becuse it only destroys the stored object.

    - -

    Swap:

    -

    void swap( optional<T>&, optional<T>& ) has the same exception guarantee as swap(T&,T&) when both optionals are initialized.
    -If only one of the optionals is initialized, it gives the same exception guarantee as T::operator=( T const& ) (since optional<T>::operator=( none_t ) doesn't throw).
    -If none of the optionals is initialized, it has no-throw guarantee since it is a no-op.

    - -
    - -

    Type requirements

    -

    In general, T must be Copy Constructible and have a no-throw destructor. The copy-constructible requirement is not needed -if InPlaceFactories are used.
    -T is not required to be Default Constructible

    - -
    - -

    Implementation Notes

    -

    optional<T> is currently implemented - using a custom aligned storage facility built from alignment_of and type_with_alignment (both from Type Traits). - It uses a separate boolean flag to indicate the initialization state.

    -

    Placement new with T's copy constructor and T's destructor - is explicitly used to initialize and destroy optional values. This allows T's default constructor to be effectively by-passed.

    -

    If assignment is used and the lvalue optional is uninitialized, T's copy constructor is used. However, if it is already initialized, T's assignment operator is used. This prevents optional from offering any exception guarantee stronger than the one offered by the type T itself

    - -
    - -

    Dependencies and Portability

    - -

    The implementation uses type_traits/alignment_of.hpp and type_traits/type_with_alignment.hpp

    - -
    - -

    Acknowledgments

    -

    Pre-formal review:

    -
    -

    Peter Dimov suggested the name 'optional', and was the first to point out the - need for aligned storage
    - Douglas Gregor developed 'type_with_alignment', and later Eric Friedman coded - 'aligned_storage', which are the core of the optional class implementation.
    - Andrei Alexandrescu and Brian Parker also worked with aligned storage techniques - and their work influenced the current implementation.
    - Gennadiy Rozental made extensive and important comments which shaped the design.
    - Vesa Karvonen and Douglas Gregor made quite useful comparisons between optional, - variant and any; and made other relevant comments. Douglas Gregor and Peter - Dimov commented on comparisons and evaluation in boolean contexts.
    - Eric Friedman helped understand the issues involved with aligned storage, move/copy - operations and exception safety.
    - Many others have participated with useful comments: Aleksey Gurotov, Kevlin - Henney, David Abrahams, and others I can't recall.

    -
    -

    Post-formal review:

    -
    -

    William Kempf carefully considered the originally proposed interface and - suggested the new interface which is currently used. He also started and fueled - the discussion about the analogy optional<>/smart pointer and about - relational operators.
    - Peter Dimov, Joel de Guzman, David Abrahams, Tanton Gibbs and Ian Hanson focused - on the relational semantics of optional (originally undefined); concluding - with the fact that the pointer-like interface doesn't make it a pointer so - it shall have deep relational operators.
    - Augustus Saunders also explored the different relational semantics between - optional<> and a pointer and developed the OptionalPointee concept as - an aid against potential conflicts on generic code.
    - Joel de Guzman noticed that optional<> can be seen as an API on top - of variant<T,nil_t>.
    - Dave Gomboc explained the meaning and usage of the Haskell analog to optional<>: - the Maybe type constructor (analogy originally pointed out by David Sankel).
    - Other comments were posted by Vincent Finn, Anthony Williams, Ed Brey, Rob - Stewart, and others.
    - Joel de Guzman made the case for the support of references and helped with - the proper semantics.
    - Mat Marcus shown the virtues of a value-oriented interface, influencing the - current design, and contributed the idea of "none".

    -
    -
    - -

    Revised March 27, 2007

    -

    © Copyright Fernando Luis Cacciola Carballal, 2003-2007

    -

    Use, modification, and distribution are subject to the Boost Software -License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)

    -

    Developed by Fernando Cacciola, -the latest version of this file can be found at www.boost.org, and the boost discussion lists

    - - \ No newline at end of file diff --git a/doc/optional.qbk b/doc/optional.qbk index 388f686..7388b5f 100644 --- a/doc/optional.qbk +++ b/doc/optional.qbk @@ -40,11 +40,6 @@ Distributed under the Boost Software License, Version 1.0. [/ Icons ] -[def __NOTE__ [$images/note.png]] -[def __ALERT__ [$images/caution.png]] -[def __DETAIL__ [$images/note.png]] -[def __TIP__ [$images/tip.png]] -[def __QUESTION_MARK__ [$images/question.png]] [def __SPACE__ [$images/space.png]] [def __GO_TO__ [$images/callouts/R.png]] diff --git a/doc/reference.qbk b/doc/reference.qbk index 73993b3..c50b61a 100644 --- a/doc/reference.qbk +++ b/doc/reference.qbk @@ -126,6 +126,7 @@ Because `T` might be of reference type, in the sequel, those entries whose semantic depends on `T` being of reference type or not will be distinguished using the following convention: + * If the entry reads: `optional`, the description corresponds only to the case where `T` is not of reference type. * If the entry reads: `optional`, the description corresponds only to diff --git a/index.html b/index.html index ed59314..3031e05 100644 --- a/index.html +++ b/index.html @@ -1,11 +1,11 @@ - + Automatic redirection failed, please go to -doc/optional.html
    -

    © Copyright Beman Dawes, 2001

    +doc/html/index.html
    +

    � Copyright Beman Dawes, 2001

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)