From afbaa1252e79c86051ade30f85524868105db09e Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Fri, 10 Oct 2008 21:59:29 +0000 Subject: [PATCH 01/39] has_xxx: Adjust MSVC 7.1/8.0 workaround (ticket #1317) [SVN r49260] --- include/boost/mpl/has_xxx.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/include/boost/mpl/has_xxx.hpp b/include/boost/mpl/has_xxx.hpp index 25aac77..bd08279 100644 --- a/include/boost/mpl/has_xxx.hpp +++ b/include/boost/mpl/has_xxx.hpp @@ -157,11 +157,13 @@ template<> struct trait \ // applied to partial specialization to fix some apparently random failures // (thanks to Daniel Wallin for researching this!) -namespace boost { namespace mpl { namespace aux { -template< typename T > struct msvc71_sfinae_helper { typedef void type; }; -}}} - # define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \ +template< typename T > \ +struct BOOST_PP_CAT(trait, _msvc_sfinae_helper) \ +{ \ + typedef void type; \ +};\ +\ template< typename T, typename U = void > \ struct BOOST_PP_CAT(trait,_impl_) \ { \ @@ -172,7 +174,7 @@ struct BOOST_PP_CAT(trait,_impl_) \ template< typename T > \ struct BOOST_PP_CAT(trait,_impl_)< \ T \ - , typename boost::mpl::aux::msvc71_sfinae_helper< typename T::name >::type \ + , typename BOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \ > \ { \ BOOST_STATIC_CONSTANT(bool, value = true); \ From 74bdc378eaa8b3c55d9b2dd50852beb32ff324f0 Mon Sep 17 00:00:00 2001 From: "Michael A. Jackson" Date: Sat, 1 Nov 2008 13:15:41 +0000 Subject: [PATCH 02/39] Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor [SVN r49510] --- CMakeLists.txt | 22 +++++++++++ module.cmake | 1 + test/CMakeLists.txt | 89 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 module.cmake create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..aca1163 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,22 @@ +#---------------------------------------------------------------------------- +# This file was automatically generated from the original CMakeLists.txt file +# Add a variable to hold the headers for the library +set (lib_headers + mpl +) + +# Add a library target to the build system +boost_library_project( + mpl + # SRCDIRS + TESTDIRS test + HEADERS ${lib_headers} + # DOCDIRS + DESCRIPTION "A general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language." + MODULARIZED + AUTHORS "Aleksey Gurtovoy " + "David Abrahams " + # MAINTAINERS +) + + diff --git a/module.cmake b/module.cmake new file mode 100644 index 0000000..bfbc073 --- /dev/null +++ b/module.cmake @@ -0,0 +1 @@ +boost_module(mpl DEPENDS preprocessor) \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..dfe86f6 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,89 @@ +boost_test_compile(largest_int aux_/largest_int.cpp) +boost_test_compile(msvc_is_class aux_/msvc_is_class.cpp) +boost_test_compile(template_arity aux_/template_arity.cpp) + +boost_test_compile(advance) +boost_test_compile(always) +boost_test_compile(apply) +boost_test_compile(apply_wrap) +boost_test_compile(arithmetic) +boost_test_compile(as_sequence) +boost_test_compile(assert) +boost_test_compile(at) +boost_test_compile(back) +boost_test_compile(bind) +boost_test_compile(bitwise) +boost_test_run(bool) +boost_test_compile(comparison) +boost_test_compile(contains) +boost_test_compile(copy) +boost_test_compile(copy_if) +boost_test_compile(count) +boost_test_compile(count_if) +boost_test_compile(deque) +boost_test_compile(distance) +boost_test_compile(empty) +boost_test_compile(equal) +boost_test_compile(erase) +boost_test_compile(erase_range) +boost_test_compile(eval_if) +boost_test_compile(filter_view) +boost_test_compile(find) +boost_test_compile(find_if) +boost_test_compile(fold) +boost_test_run(for_each) +boost_test_compile(front) +boost_test_compile(has_xxx) +boost_test_compile(identity) +boost_test_compile(if) +boost_test_compile(index_of) +boost_test_compile(inherit) +boost_test_compile(insert) +boost_test_compile(insert_range) +boost_test_run(int) +boost_test_run(integral_c) +boost_test_compile(is_placeholder) +boost_test_compile(is_sequence) +boost_test_compile(iterator_tags) +boost_test_compile(joint_view) +boost_test_compile(lambda) +boost_test_compile(lambda_args) +boost_test_compile(list) +boost_test_compile(list_c) +boost_test_compile(logical) +boost_test_compile(lower_bound) +boost_test_compile(map) +boost_test_compile(max_element) +boost_test_compile(min_max) +boost_test_compile(multiset) +boost_test_compile(next) +boost_test_compile(no_has_xxx) +boost_test_compile(numeric_ops) +boost_test_compile(pair_view) +boost_test_compile(partition) +boost_test_compile(pop_front) +boost_test_compile(push_front) +boost_test_compile(quote) +boost_test_compile(range_c) +boost_test_compile(remove) +boost_test_compile(remove_if) +boost_test_compile(replace) +boost_test_compile(replace_if) +boost_test_compile(reverse) +boost_test_compile(same_as) +boost_test_compile(set) +boost_test_compile(set_c) +boost_test_compile(single_view) +boost_test_compile(size) +boost_test_run(size_t) +boost_test_compile(sizeof) +boost_test_compile(sort) +boost_test_compile(stable_partition) +boost_test_compile(transform) +boost_test_compile(transform_view) +boost_test_compile(unique) +boost_test_compile(unpack_args) +boost_test_compile(upper_bound) +boost_test_compile(vector) +boost_test_compile(vector_c) +boost_test_compile(zip_view) From 59b2f369d161dcb4543d5dfa5136e35834d1eec5 Mon Sep 17 00:00:00 2001 From: "Michael A. Jackson" Date: Fri, 7 Nov 2008 17:02:56 +0000 Subject: [PATCH 03/39] Updating CMake files to latest trunk. Added dependency information for regression tests and a few new macros for internal use. [SVN r49627] --- test/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index dfe86f6..88b7f0a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,3 +1,5 @@ +boost_additional_test_dependencies(mpl BOOST_DEPENDS test bind) + boost_test_compile(largest_int aux_/largest_int.cpp) boost_test_compile(msvc_is_class aux_/msvc_is_class.cpp) boost_test_compile(template_arity aux_/template_arity.cpp) From 699740a53e67ce3b2141af3ab57cdf1c41cbe1c7 Mon Sep 17 00:00:00 2001 From: "Michael A. Jackson" Date: Fri, 7 Nov 2008 17:05:27 +0000 Subject: [PATCH 04/39] Updating dependency information for modularized libraries. [SVN r49628] --- module.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module.cmake b/module.cmake index bfbc073..afa88fd 100644 --- a/module.cmake +++ b/module.cmake @@ -1 +1 @@ -boost_module(mpl DEPENDS preprocessor) \ No newline at end of file +boost_module(mpl DEPENDS preprocessor config detail) \ No newline at end of file From 83f2c7a600ba89993987f5445b4ce4c65ae94b40 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 16 Mar 2009 06:28:47 +0000 Subject: [PATCH 05/39] Fix fold/reverse_fold docs (http://thread.gmane.org/gmane.comp.lib.boost.devel/187366) [SVN r51791] --- doc/src/refmanual/fold.rst | 7 +++++-- doc/src/refmanual/reverse_fold.rst | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/src/refmanual/fold.rst b/doc/src/refmanual/fold.rst index 01e576b..a1ef4df 100644 --- a/doc/src/refmanual/fold.rst +++ b/doc/src/refmanual/fold.rst @@ -75,8 +75,11 @@ For any |Forward Sequence| ``s``, binary |Lambda Expression| ``op``, and arbitra .. parsed-literal:: - typedef iter_fold< s,state,apply > >::type t; - + typedef iter_fold< + s + , state + , apply2< lambda::type, _1, deref<_2> > + >::type t; Complexity diff --git a/doc/src/refmanual/reverse_fold.rst b/doc/src/refmanual/reverse_fold.rst index eb47644..b913f3d 100644 --- a/doc/src/refmanual/reverse_fold.rst +++ b/doc/src/refmanual/reverse_fold.rst @@ -88,7 +88,7 @@ and arbitrary type ``state``: typedef reverse_iter_fold< s , state - , apply > + , apply2< lambda::type, _1, deref<_2> > >::type t; From 2ab6ebd29b2c35bc7b1b1c1058315486836a0ab2 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 6 Apr 2009 02:38:36 +0000 Subject: [PATCH 06/39] apply2 -> apply_wrap2 (see http://article.gmane.org/gmane.comp.lib.boost.devel/187573) [SVN r52205] --- doc/src/refmanual/fold.rst | 2 +- doc/src/refmanual/reverse_fold.rst | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/refmanual/fold.rst b/doc/src/refmanual/fold.rst index a1ef4df..a51319e 100644 --- a/doc/src/refmanual/fold.rst +++ b/doc/src/refmanual/fold.rst @@ -78,7 +78,7 @@ For any |Forward Sequence| ``s``, binary |Lambda Expression| ``op``, and arbitra typedef iter_fold< s , state - , apply2< lambda::type, _1, deref<_2> > + , apply_wrap2< lambda::type, _1, deref<_2> > >::type t; diff --git a/doc/src/refmanual/reverse_fold.rst b/doc/src/refmanual/reverse_fold.rst index b913f3d..20b3b96 100644 --- a/doc/src/refmanual/reverse_fold.rst +++ b/doc/src/refmanual/reverse_fold.rst @@ -85,10 +85,11 @@ and arbitrary type ``state``: .. parsed-literal:: + typedef lambda::type op; typedef reverse_iter_fold< s , state - , apply2< lambda::type, _1, deref<_2> > + , apply_wrap2< op, _1, deref<_2> > >::type t; From 8513479231e9cea2b26ee0773eca53912cbc6262 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 6 Apr 2009 04:28:16 +0000 Subject: [PATCH 07/39] mpl/doc/src/README.txt: expand on 'Install prerequisites' (see http://article.gmane.org/gmane.comp.lib.boost.devel/187592) [SVN r52206] --- doc/src/README.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/src/README.txt b/doc/src/README.txt index 37a9b66..79b7251 100644 --- a/doc/src/README.txt +++ b/doc/src/README.txt @@ -19,6 +19,12 @@ Building 1. Install prerequisites. + - To install Docutils, go into its source directory and run + ``python setup.py install``. + + - To install HTML/frames writer, go to Sandbox's ``agurtovoy/html_frames`` + directory and run ``python setup.py install``. + 2. Make sure your Python ``Scripts`` directory (e.g. ``C:\Python25\Scripts``) is in your search path. From 98008e8e21f1822f320530f2713b8d45ea454564 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 6 Apr 2009 04:52:19 +0000 Subject: [PATCH 08/39] Fix prior's requirements (see http://article.gmane.org/gmane.comp.lib.boost.devel/187753/) [SVN r52207] --- doc/src/refmanual/prior.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/refmanual/prior.rst b/doc/src/refmanual/prior.rst index 84248a1..7c12471 100644 --- a/doc/src/refmanual/prior.rst +++ b/doc/src/refmanual/prior.rst @@ -48,14 +48,14 @@ Parameters +---------------+---------------------------+-----------------------------------+ | Parameter | Requirement | Description | +===============+===========================+===================================+ -| ``Iterator`` | |Forward Iterator|. | An iterator to decrement. | +| ``Iterator`` | |Bidirectional Iterator|. | An iterator to decrement. | +---------------+---------------------------+-----------------------------------+ Expression semantics -------------------- -For any |Forward Iterator|\ s ``iter``: +For any |Bidirectional Iterator|\ s ``iter``: .. parsed-literal:: @@ -63,7 +63,7 @@ For any |Forward Iterator|\ s ``iter``: typedef prior::type j; :Return type: - |Forward Iterator|. + |Bidirectional Iterator|. :Precondition: ``iter`` is decrementable. From a96b0e9924a166be46bb0bd7ad15b0099eb04d92 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Mon, 6 Apr 2009 06:00:57 +0000 Subject: [PATCH 09/39] add mpl::char_ and mpl::string, fixes #2905 [SVN r52208] --- doc/src/refmanual/IntegralConstant.rst | 1 + doc/src/refmanual/char_.rst | 89 ++++++ doc/src/refmanual/string.rst | 140 +++++++++ include/boost/mpl/char.hpp | 22 ++ include/boost/mpl/char_fwd.hpp | 27 ++ include/boost/mpl/string.hpp | 396 +++++++++++++++++++++++++ test/Jamfile.v2 | 2 + test/char.cpp | 24 ++ test/string.cpp | 173 +++++++++++ 9 files changed, 874 insertions(+) create mode 100644 doc/src/refmanual/char_.rst create mode 100644 doc/src/refmanual/string.rst create mode 100644 include/boost/mpl/char.hpp create mode 100644 include/boost/mpl/char_fwd.hpp create mode 100644 include/boost/mpl/string.hpp create mode 100644 test/char.cpp create mode 100644 test/string.cpp diff --git a/doc/src/refmanual/IntegralConstant.rst b/doc/src/refmanual/IntegralConstant.rst index ed09ed8..3788129 100644 --- a/doc/src/refmanual/IntegralConstant.rst +++ b/doc/src/refmanual/IntegralConstant.rst @@ -71,6 +71,7 @@ Models * |bool_| * |int_| * |long_| +* |char_| * |integral_c| diff --git a/doc/src/refmanual/char_.rst b/doc/src/refmanual/char_.rst new file mode 100644 index 0000000..c74b334 --- /dev/null +++ b/doc/src/refmanual/char_.rst @@ -0,0 +1,89 @@ +.. Data Types/Numeric//char_ |60 + +.. Copyright Eric Niebler 2009. +.. Distributed under the Boost +.. Software License, Version 1.0. (See accompanying +.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +char\_ +====== + +Synopsis +-------- + +.. parsed-literal:: + + template< + char N + > + struct char\_ + { + // |unspecified| + // ... + }; + + +Description +----------- + +An |Integral Constant| wrapper for ``char``. + + +Header +------ + +.. parsed-literal:: + + #include + + +Model of +-------- + +|Integral Constant| + + +Parameters +---------- + ++---------------+-------------------------------+---------------------------+ +| Parameter | Requirement | Description | ++===============+===============================+===========================+ +| ``N`` | A character constant | A value to wrap. | ++---------------+-------------------------------+---------------------------+ + +Expression semantics +-------------------- + +|Semantics disclaimer...| |Integral Constant|. + +For arbitrary character constant ``c``: + ++-------------------+-----------------------------------------------------------+ +| Expression | Semantics | ++===================+===========================================================+ +| ``char_`` | An |Integral Constant| ``x`` such that ``x::value == c`` | +| | and ``x::value_type`` is identical to ``char``. | ++-------------------+-----------------------------------------------------------+ + + +Example +------- + +.. parsed-literal:: + + typedef char_<'c'> c; + + BOOST_MPL_ASSERT(( is_same< c::value_type, char > )); + BOOST_MPL_ASSERT(( is_same< c::type, c > )); + BOOST_MPL_ASSERT(( is_same< next< c >::type, char_<'d'> > )); + BOOST_MPL_ASSERT(( is_same< prior< c >::type, char_<'b'> > )); + BOOST_MPL_ASSERT_RELATION( (c::value), ==, 'c' ); + assert( c() == 'c' ); + + +See also +-------- + +|Data Types|, |Integral Constant|, |int_|, |size_t|, |integral_c| + diff --git a/doc/src/refmanual/string.rst b/doc/src/refmanual/string.rst new file mode 100644 index 0000000..57a58a3 --- /dev/null +++ b/doc/src/refmanual/string.rst @@ -0,0 +1,140 @@ +.. Sequences/Classes//string |100 + +.. Copyright Eric Niebler 2009. +.. Distributed under the Boost +.. Software License, Version 1.0. (See accompanying +.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +string +====== + +Description +----------- + +``string`` is a |variadic|, `random access`__, `extensible`__ |Integral Sequence Wrapper| of +characters that supports constant-time insertion and removal of elements at both ends, and +linear-time insertion and removal of elements in the middle. The parameters to ``string`` +are multi-character literals, giving a somewhat readable syntax for compile-time strings. +``string`` also has a class static null-terminated character array called ``c_str`` that +facilitates interoperability with runtime string processing routines. + +__ `Random Access Sequence`_ +__ `Extensible Sequence`_ + +Header +------ + ++-------------------+-------------------------------------------------------+ +| Sequence form | Header | ++===================+=======================================================+ +| Variadic | ``#include `` | ++-------------------+-------------------------------------------------------+ + +Model of +-------- + +* |Integral Sequence Wrapper| +* |Variadic Sequence| +* |Random Access Sequence| +* |Extensible Sequence| +* |Back Extensible Sequence| +* |Front Extensible Sequence| + + +Expression semantics +-------------------- + +In the following table, ``s`` is an instance of ``string``, ``pos`` and ``last`` are iterators +into ``s``, ``r`` is a |Forward Sequence| of characters, ``n`` and ``x`` are |Integral Constant|\ s, +and |c1...cn| are arbitrary (multi-)characters. + ++---------------------------------------+-----------------------------------------------------------+ +| Expression | Semantics | ++=======================================+===========================================================+ +| .. parsed-literal:: | ``string`` of characters |c1...cn|; see | +| | |Variadic Sequence|. | +| string<|c1...cn|> | | ++---------------------------------------+-----------------------------------------------------------+ +| .. parsed-literal:: | Identical to ``string<``\ |c1...cn|\ ``>``; | +| | see |Variadic Sequence|. | +| string<|c1...cn|>::type | | ++---------------------------------------+-----------------------------------------------------------+ +| ``begin::type`` | An iterator pointing to the beginning of ``s``; | +| | see |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``end::type`` | An iterator pointing to the end of ``s``; | +| | see |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``size::type`` | The size of ``s``; see |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``empty::type`` | |true if and only if| the sequence is empty; | +| | see |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``front::type`` | The first element in ``s``; see | +| | |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``back::type`` | The last element in ``s``; see | +| | |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``at::type`` | The ``n``\ th element from the beginning of ``s``; see | +| | |Random Access Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``insert::type`` | A new ``string`` of following elements: | +| | [``begin::type``, ``pos``), ``x``, | +| | [``pos``, ``end::type``); see |Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``insert_range::type`` | A new ``string`` of following elements: | +| | [``begin::type``, ``pos``), | +| | [``begin::type``, ``end::type``) | +| | [``pos``, ``end::type``); see |Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``erase::type`` | A new ``string`` of following elements: | +| | [``begin::type``, ``pos``), | +| | [``next::type``, ``end::type``); see | +| | |Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``erase::type`` | A new ``string`` of following elements: | +| | [``begin::type``, ``pos``), | +| | [``last``, ``end::type``); see |Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``clear::type`` | An empty ``string``; see |Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``push_back::type`` | A new ``string`` of following elements: | +| | |begin/end|, ``x``; | +| | see |Back Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``pop_back::type`` | A new ``string`` of following elements: | +| | [``begin::type``, ``prior< end::type >::type``); | +| | see |Back Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``push_front::type`` | A new ``string`` of following elements: | +| | |begin/end|, ``x``; see |Front Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``pop_front::type`` | A new ``string`` of following elements: | +| | [``next< begin::type >::type``, ``end::type``); | +| | see |Front Extensible Sequence|. | ++---------------------------------------+-----------------------------------------------------------+ +| ``s::c_str`` | A null-terminated byte string such that | +| | ``s::c_str[``\ *n*\ ``]`` is | +| | ``at::type::value`` for each *n* in | +| | [``0``, ``size::type::value``), and | +| | ``s::c_str[size::type::value]`` is ``'\0'``. | ++---------------------------------------+-----------------------------------------------------------+ + + +Example +------- + +.. parsed-literal:: + + typedef string<'hell','o wo','rld'> hello; + typedef push_back >::type hello2; + + BOOST_ASSERT(0 == std::strcmp(hello2::c_str, "hello world!")); + + +See also +-------- + +|Sequences|, |Variadic Sequence|, |Random Access Sequence|, |Extensible Sequence|, |Integral Sequence Wrapper|, |char_| + diff --git a/include/boost/mpl/char.hpp b/include/boost/mpl/char.hpp new file mode 100644 index 0000000..08828c2 --- /dev/null +++ b/include/boost/mpl/char.hpp @@ -0,0 +1,22 @@ + +#ifndef BOOST_MPL_CHAR_HPP_INCLUDED +#define BOOST_MPL_CHAR_HPP_INCLUDED + +// Copyright Eric Niebler 2008 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Source$ +// $Date: 2008-06-14 08:41:37 -0700 (Sat, 16 Jun 2008) $ +// $Revision: 24874 $ + +#include + +#define AUX_WRAPPER_VALUE_TYPE char +#include + +#endif // BOOST_MPL_CHAR_HPP_INCLUDED diff --git a/include/boost/mpl/char_fwd.hpp b/include/boost/mpl/char_fwd.hpp new file mode 100644 index 0000000..442d0a1 --- /dev/null +++ b/include/boost/mpl/char_fwd.hpp @@ -0,0 +1,27 @@ + +#ifndef BOOST_MPL_CHAR_FWD_HPP_INCLUDED +#define BOOST_MPL_CHAR_FWD_HPP_INCLUDED + +// Copyright Eric Niebler 2008 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Source$ +// $Date: 2008-06-14 08:41:37 -0700 (Sat, 16 Jun 2008) $ +// $Revision: 24874 $ + +#include +#include + +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN + +template< BOOST_MPL_AUX_NTTP_DECL(char, N) > struct char_; + +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE +BOOST_MPL_AUX_ADL_BARRIER_DECL(char_) + +#endif // BOOST_MPL_CHAR_FWD_HPP_INCLUDED diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp new file mode 100644 index 0000000..72f7aeb --- /dev/null +++ b/include/boost/mpl/string.hpp @@ -0,0 +1,396 @@ + +#ifndef BOOST_MPL_STRING_HPP_INCLUDED +#define BOOST_MPL_STRING_HPP_INCLUDED + +// Copyright Eric Niebler 2009 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id: string.hpp 49239 2009-04-01 09:10:26Z eric_niebler $ +// $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ +// $Revision: 49239 $ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + #ifndef BOOST_MPL_STRING_MAX_LENGTH + # define BOOST_MPL_STRING_MAX_LENGTH 32 + #endif + + #define BOOST_MPL_STRING_MAX_PARAMS BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_STRING_MAX_LENGTH, 3), 4) + + #define BOOST_MPL_MULTICHAR_LENGTH(c) (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) + #define BOOST_MPL_MULTICHAR_AT(c,i) (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + + struct string_tag; + struct string_iterator_tag; + + template + struct string; + + template + struct string_iterator; + + template + struct sequence_tag; + + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply + : mpl::size_t + {}; + }; + + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + : Sequence::template at + {}; + }; + + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef string_iterator type; + }; + }; + + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef string_iterator type; + }; + }; + + template + struct push_back_impl; + + template<> + struct push_back_impl + { + template + struct apply + { + BOOST_MPL_ASSERT_MSG(false, PUSH_BACK_FAILED_MPL_STRING_IS_FULL, (Sequence)); + typedef void type; + }; + + template + struct apply, Value, false> + { + typedef string<(char)Value::value> type; + }; + + #define M0(z,n,data) \ + template \ + struct apply, Value, false> \ + { \ + typedef string< \ + BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ + BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ + (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + ?BOOST_PP_CAT(C,BOOST_PP_DEC(n)) \ + :(BOOST_PP_CAT(C,BOOST_PP_DEC(n))<<8)|(unsigned char)Value::value \ + , (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + ?(char)Value::value \ + :0 \ + > type; \ + }; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + #undef M0 + + template + struct apply, Value, false> + { + typedef string< + BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), C) + , (BOOST_PP_CAT(C,BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS))<<8)|(unsigned char)Value::value + > type; + }; + }; + + template + struct push_front_impl; + + template<> + struct push_front_impl + { + template + struct apply + { + BOOST_MPL_ASSERT_MSG(false, PUSH_FRONT_FAILED_MPL_STRING_IS_FULL, (Sequence)); + typedef void type; + }; + + template + struct apply, Value, false> + { + typedef string<(char)Value::value> type; + }; + + #define M0(z,n,data) \ + template \ + struct apply, Value, true> \ + { \ + typedef string< \ + (char)Value::value \ + BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, C) \ + > type; \ + }; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + #undef M0 + + template + struct apply, Value, false> + { + typedef string< + ((((unsigned char)Value::value)<<(BOOST_MPL_MULTICHAR_LENGTH(C0)*8))|C0) + , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) + > type; + }; + }; + + template + struct insert_range_impl; + + template<> + struct insert_range_impl + { + template + struct apply + : copy< + joint_view< + iterator_range< + string_iterator + , Pos + > + , joint_view< + Range + , iterator_range< + Pos + , string_iterator + > + > + > + , back_inserter > + > + {}; + }; + + template + struct insert_impl; + + template<> + struct insert_impl + { + template + struct apply + : insert_range > + {}; + }; + + template + struct erase_impl; + + template<> + struct erase_impl + { + template + struct apply + : copy< + joint_view< + iterator_range< + string_iterator + , First + > + , iterator_range< + typename if_na::type>::type + , string_iterator + > + > + , back_inserter > + > + {}; + }; + + template + struct clear_impl; + + template<> + struct clear_impl + { + template + struct apply + { + typedef string<> type; + }; + }; + + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef string_iterator< + typename Iterator::string_type + , Iterator::index + N::value + > type; + }; + }; + + template + struct distance_impl; + + template<> + struct distance_impl + { + template + struct apply + { + typedef mpl::long_ type; + }; + }; + + template + struct string_iterator + : Sequence::template at + { + typedef string_iterator_tag tag; + typedef std::random_access_iterator_tag category; + typedef Sequence string_type; + static long const index = N; + typedef string_iterator next; + typedef string_iterator prior; + }; + + template + struct string + { + /// INTERNAL ONLY + static unsigned int const front_ = C0; + /// INTERNAL ONLY + static unsigned int const back_ = BOOST_PP_CAT(C, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS)); + /// INTERNAL ONLY + typedef string rest_; + + typedef string type; + + typedef string_tag tag; + + static std::size_t const size = BOOST_MPL_MULTICHAR_LENGTH(C0) + rest_::size; + + template + struct at + : boost::mpl::char_ + {}; + + template + struct at + : rest_::template at + {}; + + static char const c_str[]; + }; + + template + char const string::c_str[] = + { + #define M0(z, n, data) at::value + BOOST_PP_ENUM(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) + #undef M0 + , '\0' // to ensure the string is null-terminated + }; + + template + std::size_t const string::size; + + template + unsigned int const string::front_; + + template + unsigned int const string::back_; + + template<> + struct string<> + { + /// INTERNAL ONLY + static unsigned int const front_ = 0; + /// INTERNAL ONLY + static unsigned int const back_ = 0; + /// INTERNAL ONLY + typedef string rest_; + + typedef string type; + + typedef string_tag tag; + + static std::size_t const size = 0; + + template + struct at + : boost::mpl::char_<'\0'> + {}; + + static char const c_str[]; + }; + + char const string<>::c_str[] = {'\0'}; + std::size_t const string<>::size; + unsigned int const string<>::front_; + unsigned int const string<>::back_; + +}} // namespace boost + +#endif // BOOST_MPL_STRING_HPP_INCLUDED diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 71c5727..d8a14d3 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -44,6 +44,7 @@ compile inherit.cpp ; compile insert.cpp ; compile insert_range.cpp ; run int.cpp ; +run char.cpp ; run integral_c.cpp : : : vacpp:-qchars=signed ; compile is_placeholder.cpp ; compile is_sequence.cpp ; @@ -90,3 +91,4 @@ compile upper_bound.cpp ; compile vector.cpp ; compile vector_c.cpp ; compile zip_view.cpp ; +run string.cpp ; diff --git a/test/char.cpp b/test/char.cpp new file mode 100644 index 0000000..39f61e7 --- /dev/null +++ b/test/char.cpp @@ -0,0 +1,24 @@ + +// Copyright Eric Niebler 2008 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id: char.cpp 49240 2009-04-01 09:21:07Z eric_niebler $ +// $Date: 2009-04-01 02:21:07 -0700 (Wed, 1 Apr 2009) $ +// $Revision: 49240 $ + +#include +#include + +#include "integral_wrapper_test.hpp" + + +MPL_TEST_CASE() +{ +# define WRAPPER(T, i) char_ + BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char) +} diff --git a/test/string.cpp b/test/string.cpp new file mode 100644 index 0000000..4976887 --- /dev/null +++ b/test/string.cpp @@ -0,0 +1,173 @@ + +// Copyright Eric Niebler 2009 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id: string.cpp 49240 2009-04-01 09:21:07Z eric_niebler $ +// $Date: 2009-04-01 02:21:07 -0700 (Wed, 1 Apr 2009) $ +// $Revision: 49240 $ + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace mpl = boost::mpl; + +// Accept a string as a template parameter! +template +struct greeting +{ + std::string say_hello() const + { + return sz; + } +}; + +struct push_char +{ + push_char(std::string &str) + : str_(&str) + {} + + void operator()(char ch) const + { + this->str_->push_back(ch); + } + + std::string *str_; +}; + +void test1() +{ + BOOST_TEST(0 == std::strcmp(mpl::string<'Hell','o wo','rld!'>::c_str, "Hello world!")); + BOOST_TEST((12 == mpl::size >::type::value)); + BOOST_TEST(('w' == mpl::at_c, 6>::type::value)); + + // test using a string as a template parameter + greeting::c_str> g; + BOOST_TEST("Hello world!" == g.say_hello()); + + BOOST_TEST(0 == std::strcmp("", mpl::string<>::c_str)); + + std::string result; + mpl::for_each >(push_char(result)); + BOOST_TEST("Hello world!" == result); + + BOOST_MPL_ASSERT((mpl::empty >)); + BOOST_MPL_ASSERT_NOT((mpl::empty >)); + + BOOST_TEST(('h' == mpl::front >::type())); + BOOST_TEST(('!' == mpl::back >::type())); +} + +// testing push_back +void test2() +{ + typedef mpl::push_back, mpl::char_<'a'> >::type t1; + BOOST_TEST(0 == std::strcmp("a", t1::c_str)); + + typedef mpl::push_back >::type t2; + BOOST_TEST(0 == std::strcmp("ab", t2::c_str)); + + typedef mpl::push_back >::type t3; + BOOST_TEST(0 == std::strcmp("abc", t3::c_str)); + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t4; + BOOST_TEST(0 == std::strcmp("abcd", t4::c_str)); + + typedef mpl::push_back >::type t5; + BOOST_TEST(0 == std::strcmp("abcde", t5::c_str)); + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; + BOOST_TEST(0 == std::strcmp("aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaa", almost_full::c_str)); + + typedef mpl::push_back >::type t6; + BOOST_TEST(0 == std::strcmp("aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaX", t6::c_str)); +} + +// testing push_front +void test3() +{ + typedef mpl::push_front, mpl::char_<'a'> >::type t1; + BOOST_TEST(0 == std::strcmp("a", t1::c_str)); + + typedef mpl::push_front >::type t2; + BOOST_TEST(0 == std::strcmp("ba", t2::c_str)); + + typedef mpl::push_front >::type t3; + BOOST_TEST(0 == std::strcmp("cba", t3::c_str)); + + typedef mpl::push_front >::type t4; + BOOST_TEST(0 == std::strcmp("dcba", t4::c_str)); + + typedef mpl::push_front >::type t5; + BOOST_TEST(0 == std::strcmp("edcba", t5::c_str)); + + typedef mpl::string<'aaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> almost_full; + BOOST_TEST(0 == std::strcmp("aaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa", almost_full::c_str)); + + typedef mpl::push_front >::type t6; + BOOST_TEST(0 == std::strcmp("Xaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa", t6::c_str)); +} + +void test4() +{ + // back-inserter with copy + typedef mpl::vector_c rgc; + typedef mpl::copy > >::type str; + BOOST_TEST(0 == std::strcmp("abcde", str::c_str)); +} + +// test insert_range and erase +void test5() +{ + typedef mpl::string<'Hell','o wo','rld!'> hello; + typedef mpl::advance_c::type, 5>::type where; + typedef mpl::string<' cru','el'> cruel; + typedef mpl::insert_range::type hello_cruel; + BOOST_TEST(0 == std::strcmp("Hello cruel world!", hello_cruel::c_str)); + + typedef mpl::erase::type, where>::type erased1; + BOOST_TEST(0 == std::strcmp(" world!", erased1::c_str)); +} + + +int main() +{ + test1(); + test2(); + test3(); + test4(); + test5(); + + return boost::report_errors(); +} From bf259091505bc639b879c8c80a2204464b060eb8 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Tue, 7 Apr 2009 19:53:53 +0000 Subject: [PATCH 10/39] msvc-7.1 portability fix, signed/unsigned warning fix [SVN r52241] --- include/boost/mpl/string.hpp | 37 +++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 72f7aeb..09e50ee 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -14,6 +14,8 @@ // $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ // $Revision: 49239 $ +#include +#include #include #include #include @@ -52,7 +54,7 @@ namespace boost { namespace mpl template struct string; - template + template struct string_iterator; template @@ -299,18 +301,18 @@ namespace boost { namespace mpl template struct apply { - typedef mpl::long_ type; + typedef mpl::long_<(long)Last::index - (long)First::index> type; }; }; - template + template struct string_iterator : Sequence::template at { typedef string_iterator_tag tag; typedef std::random_access_iterator_tag category; typedef Sequence string_type; - static long const index = N; + static unsigned long const index = N; typedef string_iterator next; typedef string_iterator prior; }; @@ -331,15 +333,36 @@ namespace boost { namespace mpl static std::size_t const size = BOOST_MPL_MULTICHAR_LENGTH(C0) + rest_::size; - template + #if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + private: + /// INTERNAL ONLY + template + struct at_impl + : boost::mpl::char_ + {}; + + /// INTERNAL ONLY + template + struct at_impl + : rest_::template at + {}; + + public: + template + struct at + : at_impl + {}; + #else + template struct at : boost::mpl::char_ {}; - template + template struct at : rest_::template at {}; + #endif static char const c_str[]; }; @@ -378,7 +401,7 @@ namespace boost { namespace mpl static std::size_t const size = 0; - template + template struct at : boost::mpl::char_<'\0'> {}; From c7025170c7510185e8271a4366208d04a920d758 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 8 Apr 2009 21:57:03 +0000 Subject: [PATCH 11/39] workaround for msvc-8.0 bug [SVN r52271] --- include/boost/mpl/string.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 09e50ee..1ab7d33 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -333,7 +333,7 @@ namespace boost { namespace mpl static std::size_t const size = BOOST_MPL_MULTICHAR_LENGTH(C0) + rest_::size; - #if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) private: /// INTERNAL ONLY template From 0ee68a2c761c48a584131f4e09d8330eb62303c5 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 11 Apr 2009 05:48:51 +0000 Subject: [PATCH 12/39] mpl::string is a bidirectional sequence, not random access; c_str is a separate metafunction, not a class static [SVN r52314] --- doc/src/refmanual/c_str.rst | 108 +++++++ doc/src/refmanual/refmanual.toc | 1 + doc/src/refmanual/string.rst | 45 ++- include/boost/mpl/string.hpp | 512 ++++++++++++++++++-------------- test/string.cpp | 488 ++++++++++++++++++++++++------ 5 files changed, 821 insertions(+), 333 deletions(-) create mode 100644 doc/src/refmanual/c_str.rst diff --git a/doc/src/refmanual/c_str.rst b/doc/src/refmanual/c_str.rst new file mode 100644 index 0000000..8f0ea4e --- /dev/null +++ b/doc/src/refmanual/c_str.rst @@ -0,0 +1,108 @@ +.. Metafunctions/String Operations//c_str |10 + +.. Copyright Eric Niebler 2009. +.. Distributed under the Boost +.. Software License, Version 1.0. (See accompanying +.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +c_str +===== + +Synopsis +-------- + +.. parsed-literal:: + + template< + typename Sequence + > + struct c_str + { + typedef |unspecified| type; + static char const value[]; + }; + + +Description +----------- + +``c_str`` converts the |Forward Sequence| of |Integral Constant|\ s ``Sequence`` +into a null-terminated byte string containing an equivalent sequence. + + +Header +------ + +.. parsed-literal:: + + #include + + +Model of +-------- + +|Metafunction| + + +Parameters +---------- + ++---------------+---------------------------+-----------------------------------------------+ +| Parameter | Requirement | Description | ++===============+===========================+===============================================+ +| ``Sequence`` | |Forward Sequence| of | A sequence to be converted into a | +| | |Integral Constant|\ s | null-terminated byte string. | ++---------------+---------------------------+-----------------------------------------------+ + + +Expression semantics +-------------------- + +.. compound:: + :class: expression-semantics + + For any |Forward Sequence| of |Integral Constant|\ s ``s``, + + .. parsed-literal:: + + c_str::value; + + :Return type: + A null-terminated byte string. + + :Precondition: + ``size::value <= BOOST_MPL_STRING_MAX_LENGTH``. + + :Semantics: + Equivalent to + + .. parsed-literal:: + + char const value[] = { + at::type::value + , ... + , at::value-1>::type::value + , '\\0' + }; + +Complexity +---------- + ++-------------------------------+-----------------------------------+ +| Sequence archetype | Complexity | ++===============================+===================================+ +| |Forward Sequence| | Linear. | ++-------------------------------+-----------------------------------+ + +Example +------- + +.. parsed-literal:: + + typedef vector_c hello; + assert( 0 == std::strcmp( c_str::value, "hello" ) ); + +See also +-------- + +|Forward Sequence|, |Integral Constant|, |string| diff --git a/doc/src/refmanual/refmanual.toc b/doc/src/refmanual/refmanual.toc index caad192..93b115a 100644 --- a/doc/src/refmanual/refmanual.toc +++ b/doc/src/refmanual/refmanual.toc @@ -23,6 +23,7 @@ Metafunctions/Comparisons Metafunctions/Logical Operations Metafunctions/Bitwise Operations Metafunctions/Trivial +Metafunctions/String Operations Metafunctions/Miscellaneous Data Types Data Types/Concepts diff --git a/doc/src/refmanual/string.rst b/doc/src/refmanual/string.rst index 57a58a3..833762b 100644 --- a/doc/src/refmanual/string.rst +++ b/doc/src/refmanual/string.rst @@ -11,14 +11,15 @@ string Description ----------- -``string`` is a |variadic|, `random access`__, `extensible`__ |Integral Sequence Wrapper| of +``string`` is a |variadic|, `bidirectional`__, `extensible`__ |Integral Sequence Wrapper| of characters that supports constant-time insertion and removal of elements at both ends, and linear-time insertion and removal of elements in the middle. The parameters to ``string`` are multi-character literals, giving a somewhat readable syntax for compile-time strings. -``string`` also has a class static null-terminated character array called ``c_str`` that -facilitates interoperability with runtime string processing routines. +``string`` can also be an argument to the ``c_str`` metafunction, which generates a +null-terminated character array that facilitates interoperability with runtime string +processing routines. -__ `Random Access Sequence`_ +__ `Bidirectional Sequence`_ __ `Extensible Sequence`_ Header @@ -35,12 +36,11 @@ Model of * |Integral Sequence Wrapper| * |Variadic Sequence| -* |Random Access Sequence| +* |Bidirectional Sequence| * |Extensible Sequence| * |Back Extensible Sequence| * |Front Extensible Sequence| - Expression semantics -------------------- @@ -60,24 +60,21 @@ and |c1...cn| are arbitrary (multi-)characters. | string<|c1...cn|>::type | | +---------------------------------------+-----------------------------------------------------------+ | ``begin::type`` | An iterator pointing to the beginning of ``s``; | -| | see |Random Access Sequence|. | +| | see |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``end::type`` | An iterator pointing to the end of ``s``; | -| | see |Random Access Sequence|. | +| | see |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ -| ``size::type`` | The size of ``s``; see |Random Access Sequence|. | +| ``size::type`` | The size of ``s``; see |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``empty::type`` | |true if and only if| the sequence is empty; | -| | see |Random Access Sequence|. | +| | see |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``front::type`` | The first element in ``s``; see | -| | |Random Access Sequence|. | +| | |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``back::type`` | The last element in ``s``; see | -| | |Random Access Sequence|. | -+---------------------------------------+-----------------------------------------------------------+ -| ``at::type`` | The ``n``\ th element from the beginning of ``s``; see | -| | |Random Access Sequence|. | +| | |Bidirectional Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``insert::type`` | A new ``string`` of following elements: | | | [``begin::type``, ``pos``), ``x``, | @@ -114,11 +111,10 @@ and |c1...cn| are arbitrary (multi-)characters. | | [``next< begin::type >::type``, ``end::type``); | | | see |Front Extensible Sequence|. | +---------------------------------------+-----------------------------------------------------------+ -| ``s::c_str`` | A null-terminated byte string such that | -| | ``s::c_str[``\ *n*\ ``]`` is | -| | ``at::type::value`` for each *n* in | -| | [``0``, ``size::type::value``), and | -| | ``s::c_str[size::type::value]`` is ``'\0'``. | +| ``c_str::value`` | A null-terminated byte string such that | +| | ``c_str::value[``\ *n*\ ``]`` is equal to the *n*\ -th | +| | character in ``s``, and | +| | ``c_str::value[size::type::value]`` is ``'\0'``. | +---------------------------------------+-----------------------------------------------------------+ @@ -127,14 +123,13 @@ Example .. parsed-literal:: - typedef string<'hell','o wo','rld'> hello; - typedef push_back >::type hello2; + typedef mpl::string<'hell','o wo','rld'> hello; + typedef mpl::push_back >::type hello2; - BOOST_ASSERT(0 == std::strcmp(hello2::c_str, "hello world!")); + BOOST_ASSERT(0 == std::strcmp(mpl::c_str::value, "hello world!")); See also -------- -|Sequences|, |Variadic Sequence|, |Random Access Sequence|, |Extensible Sequence|, |Integral Sequence Wrapper|, |char_| - +|Sequences|, |Variadic Sequence|, |Bidirectional Sequence|, |Extensible Sequence|, |Integral Sequence Wrapper|, |char_|, |c_str| diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 1ab7d33..885059f 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -4,8 +4,8 @@ // Copyright Eric Niebler 2009 // -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/mpl for documentation. @@ -14,23 +14,21 @@ // $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ // $Revision: 49239 $ -#include -#include #include -#include -#include #include +#include #include #include #include #include #include +#include #include #include #include #include -#include #include +#include #include #include #include @@ -42,7 +40,7 @@ namespace boost { namespace mpl #ifndef BOOST_MPL_STRING_MAX_LENGTH # define BOOST_MPL_STRING_MAX_LENGTH 32 #endif - + #define BOOST_MPL_STRING_MAX_PARAMS BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_STRING_MAX_LENGTH, 3), 4) #define BOOST_MPL_MULTICHAR_LENGTH(c) (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) @@ -51,10 +49,10 @@ namespace boost { namespace mpl struct string_tag; struct string_iterator_tag; - template + template struct string; - template + template struct string_iterator; template @@ -64,36 +62,40 @@ namespace boost { namespace mpl struct size_impl; template<> - struct size_impl + struct size_impl { template - struct apply - : mpl::size_t - {}; - }; + struct apply; - template - struct at_impl; + #define M0(z, n, data) \ + + BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C,n)) + + #define M1(z, n, data) \ + template \ + struct apply > \ + : mpl::size_t<(0 BOOST_PP_REPEAT_ ## z(n, M0, ~))> \ + {}; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_INC(BOOST_MPL_STRING_MAX_PARAMS), M1, ~) + #undef M0 + #undef M1 + }; template<> - struct at_impl - { - template - struct apply - : Sequence::template at - {}; - }; + struct size_impl::apply > + : mpl::size_t<0> + {}; template struct begin_impl; template<> - struct begin_impl + struct begin_impl { template struct apply { - typedef string_iterator type; + typedef mpl::string_iterator type; }; }; @@ -101,102 +103,212 @@ namespace boost { namespace mpl struct end_impl; template<> - struct end_impl + struct end_impl { template - struct apply - { - typedef string_iterator type; + struct apply; + + #define M0(z,n,data) \ + template \ + struct apply > \ + { \ + typedef mpl::string_iterator, n, 0> type; \ }; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_INC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + #undef M0 + }; + + template<> + struct end_impl::apply > + { + typedef mpl::string_iterator, 0, 0> type; }; template struct push_back_impl; template<> - struct push_back_impl + struct push_back_impl { template struct apply { - BOOST_MPL_ASSERT_MSG(false, PUSH_BACK_FAILED_MPL_STRING_IS_FULL, (Sequence)); - typedef void type; + BOOST_MPL_ASSERT_MSG( + (BOOST_MPL_STRING_MAX_LENGTH != mpl::size::type::value) + , PUSH_BACK_FAILED_MPL_STRING_IS_FULL + , (Sequence) + ); + // If the above assertion didn't fire, then the string is sparse. + // Repack the string and retry the push_back + typedef + typename mpl::push_back< + typename mpl::copy< + Sequence + , mpl::back_inserter > + >::type + , Value + >::type + type; }; template - struct apply, Value, false> + struct apply, Value, false> { - typedef string<(char)Value::value> type; + typedef mpl::string<(char)Value::value> type; }; #define M0(z,n,data) \ - template \ - struct apply, Value, false> \ + template \ + struct apply, Value, false> \ { \ - typedef string< \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ - BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ - ?BOOST_PP_CAT(C,BOOST_PP_DEC(n)) \ - :(BOOST_PP_CAT(C,BOOST_PP_DEC(n))<<8)|(unsigned char)Value::value \ - , (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ - ?(char)Value::value \ - :0 \ - > type; \ + typedef \ + mpl::string< \ + BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ + BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ + (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + ?BOOST_PP_CAT(C,BOOST_PP_DEC(n)) \ + :(BOOST_PP_CAT(C,BOOST_PP_DEC(n))<<8)|(unsigned char)Value::value \ + , (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + ?(char)Value::value \ + :0 \ + > \ + type; \ }; BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) #undef M0 - template - struct apply, Value, false> + template + struct apply, Value, false> { - typedef string< - BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), C) - , (BOOST_PP_CAT(C,BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS))<<8)|(unsigned char)Value::value - > type; + typedef + mpl::string< + BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), C) + , (BOOST_PP_CAT(C,BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS))<<8)|(unsigned char)Value::value + > + type; }; }; + template + struct pop_back_impl; + + template<> + struct pop_back_impl + { + template + struct apply; + + #define M0(z,n,data) \ + template \ + struct apply > \ + { \ + BOOST_MPL_ASSERT_MSG((C0 != 0), POP_BACK_FAILED_MPL_STRING_IS_EMPTY, (mpl::string<>)); \ + typedef \ + mpl::string< \ + BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ + BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ + (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>>8) \ + > \ + type; \ + }; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_INC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + #undef M0 + }; + template struct push_front_impl; template<> - struct push_front_impl + struct push_front_impl { template struct apply { - BOOST_MPL_ASSERT_MSG(false, PUSH_FRONT_FAILED_MPL_STRING_IS_FULL, (Sequence)); - typedef void type; + BOOST_MPL_ASSERT_MSG( + (BOOST_MPL_STRING_MAX_LENGTH != mpl::size::type::value) + , PUSH_FRONT_FAILED_MPL_STRING_IS_FULL + , (Sequence) + ); + // If the above assertion didn't fire, then the string is sparse. + // Repack the string and retry the push_front. + typedef + typename mpl::push_front< + typename mpl::reverse_copy< + Sequence + , mpl::front_inserter > + >::type + , Value + >::type + type; }; template - struct apply, Value, false> + struct apply, Value, false> { - typedef string<(char)Value::value> type; + typedef mpl::string<(char)Value::value> type; }; #define M0(z,n,data) \ - template \ - struct apply, Value, true> \ + template \ + struct apply, Value, true> \ { \ - typedef string< \ - (char)Value::value \ - BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, C) \ - > type; \ + typedef \ + mpl::string< \ + (char)Value::value \ + BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, C) \ + > \ + type; \ }; BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) #undef M0 - template - struct apply, Value, false> + template + struct apply, Value, false> { - typedef string< - ((((unsigned char)Value::value)<<(BOOST_MPL_MULTICHAR_LENGTH(C0)*8))|C0) - , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) - > type; + typedef + mpl::string< + ((((unsigned char)Value::value)<<(BOOST_MPL_MULTICHAR_LENGTH(C0)*8))|C0) + , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) + > + type; + }; + }; + + template + struct pop_front_impl; + + template<> + struct pop_front_impl + { + template + struct apply; + + #define M0(z,n,data) \ + template \ + struct apply, true> \ + { \ + BOOST_MPL_ASSERT_MSG((C0 != 0), POP_FRONT_FAILED_MPL_STRING_IS_EMPTY, (mpl::string<>)); \ + typedef \ + mpl::string \ + type; \ + }; + + BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + #undef M0 + + template + struct apply, false> + { + typedef + mpl::string< + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(C0)-1)*8))-1)&C0) + , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) + > + type; }; }; @@ -204,25 +316,25 @@ namespace boost { namespace mpl struct insert_range_impl; template<> - struct insert_range_impl + struct insert_range_impl { template struct apply - : copy< - joint_view< - iterator_range< - string_iterator + : mpl::copy< + mpl::joint_view< + mpl::iterator_range< + mpl::string_iterator , Pos > - , joint_view< + , mpl::joint_view< Range - , iterator_range< + , mpl::iterator_range< Pos - , string_iterator + , typename mpl::end::type > > > - , back_inserter > + , mpl::back_inserter > > {}; }; @@ -231,11 +343,11 @@ namespace boost { namespace mpl struct insert_impl; template<> - struct insert_impl + struct insert_impl { template struct apply - : insert_range > + : mpl::insert_range > {}; }; @@ -243,22 +355,22 @@ namespace boost { namespace mpl struct erase_impl; template<> - struct erase_impl + struct erase_impl { template struct apply - : copy< - joint_view< - iterator_range< - string_iterator + : mpl::copy< + mpl::joint_view< + mpl::iterator_range< + mpl::string_iterator , First > - , iterator_range< - typename if_na::type>::type - , string_iterator + , mpl::iterator_range< + typename mpl::if_na::type>::type + , typename mpl::end::type > > - , back_inserter > + , mpl::back_inserter > > {}; }; @@ -267,152 +379,122 @@ namespace boost { namespace mpl struct clear_impl; template<> - struct clear_impl + struct clear_impl { template struct apply { - typedef string<> type; + typedef mpl::string<> type; }; }; - template - struct advance_impl; - - template<> - struct advance_impl - { - template - struct apply - { - typedef string_iterator< - typename Iterator::string_type - , Iterator::index + N::value - > type; - }; + #define M0(z, n, data) \ + template \ + struct string_iterator, n, J> \ + { \ + typedef mpl::string string; \ + typedef std::bidirectional_iterator_tag category; \ + typedef \ + typename mpl::if_c< \ + (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) \ + , mpl::string_iterator \ + , mpl::string_iterator \ + >::type \ + next; \ + typedef \ + mpl::string_iterator \ + prior; \ + typedef mpl::char_ type; \ + }; \ + template \ + struct string_iterator, n, 0> \ + { \ + typedef mpl::string string; \ + typedef std::bidirectional_iterator_tag category; \ + typedef \ + typename mpl::if_c< \ + (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) \ + , mpl::string_iterator \ + , mpl::string_iterator \ + >::type \ + next; \ + typedef \ + mpl::string_iterator< \ + string \ + , n - 1 \ + , BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, BOOST_PP_DEC(n))) - 1 \ + > \ + prior; \ + typedef mpl::char_ type; \ }; - template - struct distance_impl; + BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_PARAMS, M0, ~) + #undef M0 - template<> - struct distance_impl - { - template - struct apply - { - typedef mpl::long_<(long)Last::index - (long)First::index> type; - }; - }; - - template - struct string_iterator - : Sequence::template at - { - typedef string_iterator_tag tag; - typedef std::random_access_iterator_tag category; - typedef Sequence string_type; - static unsigned long const index = N; - typedef string_iterator next; - typedef string_iterator prior; - }; - - template + template struct string { /// INTERNAL ONLY - static unsigned int const front_ = C0; - /// INTERNAL ONLY - static unsigned int const back_ = BOOST_PP_CAT(C, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS)); - /// INTERNAL ONLY - typedef string rest_; + enum + { + front_ = C0 + , back_ = BOOST_PP_CAT(C, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS)) + }; - typedef string type; - - typedef string_tag tag; - - static std::size_t const size = BOOST_MPL_MULTICHAR_LENGTH(C0) + rest_::size; - - #if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) - private: - /// INTERNAL ONLY - template - struct at_impl - : boost::mpl::char_ - {}; - - /// INTERNAL ONLY - template - struct at_impl - : rest_::template at - {}; - - public: - template - struct at - : at_impl - {}; - #else - template - struct at - : boost::mpl::char_ - {}; - - template - struct at - : rest_::template at - {}; - #endif - - static char const c_str[]; + typedef string type; + typedef string_tag tag; }; - template - char const string::c_str[] = + namespace aux_ { - #define M0(z, n, data) at::value - BOOST_PP_ENUM(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) - #undef M0 - , '\0' // to ensure the string is null-terminated - }; - - template - std::size_t const string::size; - - template - unsigned int const string::front_; - - template - unsigned int const string::back_; - - template<> - struct string<> - { - /// INTERNAL ONLY - static unsigned int const front_ = 0; - /// INTERNAL ONLY - static unsigned int const back_ = 0; - /// INTERNAL ONLY - typedef string rest_; - - typedef string type; - - typedef string_tag tag; - - static std::size_t const size = 0; - - template - struct at - : boost::mpl::char_<'\0'> + template + struct next_unless + : mpl::next {}; - static char const c_str[]; + template + struct next_unless + { + typedef End type; + }; + + template + struct deref_unless + : mpl::deref + {}; + + template + struct deref_unless + { + typedef mpl::char_<'\0'> type; + }; + } + + template + struct c_str + { + typedef typename mpl::end::type iend; + typedef typename mpl::begin::type i0; + #define M0(z, n, data) \ + typedef \ + typename mpl::aux_::next_unless::type \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)); + BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) + #undef M0 + + typedef c_str type; + static char const value[]; }; - char const string<>::c_str[] = {'\0'}; - std::size_t const string<>::size; - unsigned int const string<>::front_; - unsigned int const string<>::back_; + template + char const c_str::value[] = + { + #define M0(z, n, data) \ + mpl::aux_::deref_unless::type::value, + BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) + #undef M0 + '\0' + }; }} // namespace boost diff --git a/test/string.cpp b/test/string.cpp index 4976887..bc6e23c 100644 --- a/test/string.cpp +++ b/test/string.cpp @@ -17,27 +17,21 @@ #include -#include -#include #include -#include -#include #include #include -#include #include #include -#include -#include +#include #include #include +#include +#include #include -#include -#include -#include -#include +#include #include #include + namespace mpl = boost::mpl; // Accept a string as a template parameter! @@ -64,18 +58,287 @@ struct push_char std::string *str_; }; -void test1() +int main() { - BOOST_TEST(0 == std::strcmp(mpl::string<'Hell','o wo','rld!'>::c_str, "Hello world!")); - BOOST_TEST((12 == mpl::size >::type::value)); - BOOST_TEST(('w' == mpl::at_c, 6>::type::value)); + // Test mpl::size of strings + { + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> full; + + BOOST_MPL_ASSERT_RELATION(0, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(1, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(2, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(2, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(4, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(5, ==, (mpl::size >::value)); + BOOST_MPL_ASSERT_RELATION(31, ==, (mpl::size::value)); + BOOST_MPL_ASSERT_RELATION(32, ==, (mpl::size::value)); + } + + // Test mpl::begin and mpl::end with strings + { + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> full; + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::begin >::type + , mpl::end >::type + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::begin >::type + , mpl::string_iterator, 0, 0> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::end >::type + , mpl::string_iterator, 1, 0> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::begin::type + , mpl::string_iterator + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::end::type + , mpl::string_iterator + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::begin::type + , mpl::string_iterator + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::end::type + , mpl::string_iterator + > + )); + } + + // testing push_back + { + typedef mpl::push_back, mpl::char_<'a'> >::type t1; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t2; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t3; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t4; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t5; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; + typedef mpl::push_back >::type t6; + BOOST_MPL_ASSERT((boost::is_same >)); + } + + // Test mpl::next + { + typedef mpl::string<'a','bc','def','ghij'> s; + + typedef mpl::begin::type i0; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i1; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i2; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i3; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i4; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i5; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i6; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i7; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i8; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i9; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::next::type i10; + BOOST_MPL_ASSERT((boost::is_same >)); + + BOOST_MPL_ASSERT((boost::is_same::type>)); + } + + // Test mpl::prior + { + typedef mpl::string<'a','bc','def','ghij'> s; + + typedef mpl::end::type i10; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i9; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i8; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i7; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i6; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i5; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i4; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i3; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i2; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i1; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::prior::type i0; + BOOST_MPL_ASSERT((boost::is_same >)); + + BOOST_MPL_ASSERT((boost::is_same::type>)); + } + + // Test mpl::deref + { + typedef mpl::string<'a','bc','def','ghij'> s; + + typedef mpl::begin::type i0; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'a'> >)); + + typedef mpl::next::type i1; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'b'> >)); + + typedef mpl::next::type i2; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'c'> >)); + + typedef mpl::next::type i3; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'d'> >)); + + typedef mpl::next::type i4; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'e'> >)); + + typedef mpl::next::type i5; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'f'> >)); + + typedef mpl::next::type i6; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'g'> >)); + + typedef mpl::next::type i7; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'h'> >)); + + typedef mpl::next::type i8; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'i'> >)); + + typedef mpl::next::type i9; + BOOST_MPL_ASSERT((boost::is_same::type, mpl::char_<'j'> >)); + } + + // testing push_back + { + typedef mpl::push_back, mpl::char_<'a'> >::type t1; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t2; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t3; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t4; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_back >::type t5; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; + typedef mpl::push_back >::type t6; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'a','a','a','a','a','a','a','aaaa'> must_repack; + typedef mpl::push_back >::type t7; + BOOST_MPL_ASSERT((boost::is_same >)); + } + + // testing push_front + { + typedef mpl::push_front, mpl::char_<'a'> >::type t1; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_front >::type t2; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_front >::type t3; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_front >::type t4; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::push_front >::type t5; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'aaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> almost_full; + typedef mpl::push_front >::type t6; + BOOST_MPL_ASSERT((boost::is_same >)); + + typedef mpl::string<'aaaa','a','a','a','a','a','a','a'> must_repack; + typedef mpl::push_front >::type t7; + BOOST_MPL_ASSERT((boost::is_same >)); + } + + // Test c_str<> + BOOST_TEST(0 == std::strcmp( + mpl::c_str >::value + , "" + )); + + BOOST_TEST(0 == std::strcmp( + mpl::c_str >::value + , "Hell" "o wo" "rld!" + )); + + BOOST_TEST(0 == std::strcmp( + mpl::c_str >::value + , "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaX" + )); // test using a string as a template parameter - greeting::c_str> g; + greeting >::value> g; BOOST_TEST("Hello world!" == g.say_hello()); - BOOST_TEST(0 == std::strcmp("", mpl::string<>::c_str)); - std::string result; mpl::for_each >(push_char(result)); BOOST_TEST("Hello world!" == result); @@ -85,89 +348,128 @@ void test1() BOOST_TEST(('h' == mpl::front >::type())); BOOST_TEST(('!' == mpl::back >::type())); -} -// testing push_back -void test2() -{ - typedef mpl::push_back, mpl::char_<'a'> >::type t1; - BOOST_TEST(0 == std::strcmp("a", t1::c_str)); - - typedef mpl::push_back >::type t2; - BOOST_TEST(0 == std::strcmp("ab", t2::c_str)); - - typedef mpl::push_back >::type t3; - BOOST_TEST(0 == std::strcmp("abc", t3::c_str)); - BOOST_MPL_ASSERT((boost::is_same >)); - - typedef mpl::push_back >::type t4; - BOOST_TEST(0 == std::strcmp("abcd", t4::c_str)); - - typedef mpl::push_back >::type t5; - BOOST_TEST(0 == std::strcmp("abcde", t5::c_str)); - BOOST_MPL_ASSERT((boost::is_same >)); - - typedef mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> almost_full; - BOOST_TEST(0 == std::strcmp("aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaa", almost_full::c_str)); - - typedef mpl::push_back >::type t6; - BOOST_TEST(0 == std::strcmp("aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaX", t6::c_str)); -} - -// testing push_front -void test3() -{ - typedef mpl::push_front, mpl::char_<'a'> >::type t1; - BOOST_TEST(0 == std::strcmp("a", t1::c_str)); - - typedef mpl::push_front >::type t2; - BOOST_TEST(0 == std::strcmp("ba", t2::c_str)); - - typedef mpl::push_front >::type t3; - BOOST_TEST(0 == std::strcmp("cba", t3::c_str)); - - typedef mpl::push_front >::type t4; - BOOST_TEST(0 == std::strcmp("dcba", t4::c_str)); - - typedef mpl::push_front >::type t5; - BOOST_TEST(0 == std::strcmp("edcba", t5::c_str)); - - typedef mpl::string<'aaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> almost_full; - BOOST_TEST(0 == std::strcmp("aaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa", almost_full::c_str)); - - typedef mpl::push_front >::type t6; - BOOST_TEST(0 == std::strcmp("Xaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa" "aaaa", t6::c_str)); -} - -void test4() -{ // back-inserter with copy typedef mpl::vector_c rgc; + BOOST_TEST(0 == std::strcmp("abcde", mpl::c_str::value)); typedef mpl::copy > >::type str; - BOOST_TEST(0 == std::strcmp("abcde", str::c_str)); -} + BOOST_TEST(0 == std::strcmp("abcde", mpl::c_str::value)); -// test insert_range and erase -void test5() -{ - typedef mpl::string<'Hell','o wo','rld!'> hello; - typedef mpl::advance_c::type, 5>::type where; - typedef mpl::string<' cru','el'> cruel; - typedef mpl::insert_range::type hello_cruel; - BOOST_TEST(0 == std::strcmp("Hello cruel world!", hello_cruel::c_str)); + // test insert_range and erase + { + typedef mpl::string<'Hell','o wo','rld!'> hello; + typedef mpl::advance_c::type, 5>::type where; + typedef mpl::string<' cru','el'> cruel; + typedef mpl::insert_range::type hello_cruel; + BOOST_TEST(0 == std::strcmp("Hello cruel world!", mpl::c_str::value)); - typedef mpl::erase::type, where>::type erased1; - BOOST_TEST(0 == std::strcmp(" world!", erased1::c_str)); -} + typedef mpl::erase::type, where>::type erased1; + BOOST_TEST(0 == std::strcmp(" world!", mpl::c_str::value)); + } + // test pop_front + { + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<> + > + )); -int main() -{ - test1(); - test2(); - test3(); - test4(); - test5(); + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'b'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'bc'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'bcd'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'bcd','e'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'e'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_front >::type + , mpl::string<'aaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa'> + > + )); + } + + // test pop_back + { + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'a'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'ab'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'abc'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'abcd'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'d'> + > + )); + + BOOST_MPL_ASSERT(( + boost::is_same< + mpl::pop_back >::type + , mpl::string<'aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaaa','aaa'> + > + )); + } return boost::report_errors(); } From 2cf51a12f1c6b442dbe7f7fb367891b36db471db Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 11 Apr 2009 06:07:54 +0000 Subject: [PATCH 13/39] fix off-by-1 errors [SVN r52315] --- include/boost/mpl/string.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 885059f..f5877d4 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -176,7 +176,7 @@ namespace boost { namespace mpl type; \ }; - BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 template @@ -263,7 +263,7 @@ namespace boost { namespace mpl type; \ }; - BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 template @@ -297,7 +297,7 @@ namespace boost { namespace mpl type; \ }; - BOOST_PP_REPEAT_FROM_TO(1, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), M0, ~) + BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 template From 5cac79c3e676f4b2fdc8f3829075957660674e77 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 11 Apr 2009 06:30:53 +0000 Subject: [PATCH 14/39] add and document BOOST_MPL_LIMIT_STRING_SIZE and mpl/limits/string.hpp [SVN r52317] --- doc/src/refmanual/LIMIT_STRING_SIZE.rst | 52 +++++++++++++++++++++++++ doc/src/refmanual/string.rst | 4 +- include/boost/mpl/limits/string.hpp | 21 ++++++++++ include/boost/mpl/string.hpp | 16 ++++---- 4 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 doc/src/refmanual/LIMIT_STRING_SIZE.rst create mode 100644 include/boost/mpl/limits/string.hpp diff --git a/doc/src/refmanual/LIMIT_STRING_SIZE.rst b/doc/src/refmanual/LIMIT_STRING_SIZE.rst new file mode 100644 index 0000000..4754e90 --- /dev/null +++ b/doc/src/refmanual/LIMIT_STRING_SIZE.rst @@ -0,0 +1,52 @@ +.. Macros/Configuration//BOOST_MPL_LIMIT_STRING_SIZE |65 + +.. Copyright Eric Niebler 2009. +.. Distributed under the Boost +.. Software License, Version 1.0. (See accompanying +.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +BOOST_MPL_LIMIT_STRING_SIZE +=========================== + +Synopsis +-------- + +.. parsed-literal:: + + #if !defined(BOOST_MPL_LIMIT_STRING_SIZE) + # define BOOST_MPL_LIMIT_STRING_SIZE \\ + |idic| \\ + /\*\*/ + #endif + + +Description +----------- + +``BOOST_MPL_LIMIT_STRING_SIZE`` is an overridable configuration macro regulating +the maximum arity of the ``string``\ 's |variadic forms|. In this +implementation of the library, ``BOOST_MPL_LIMIT_STRING_SIZE`` has a default value +of 32. To override the default limit, define ``BOOST_MPL_LIMIT_STRING_SIZE`` to +the desired maximum arity before including any library header. + + +Example +------- + +.. parsed-literal:: + + #define BOOST_MPL_LIMIT_STRING_SIZE 8 + ``#``\ include + + using namespace boost::mpl; + + typedef string<'a'> s_1; + typedef string<'abcd','efgh'> s_8; + // typedef string<'abcd','efgh','i'> s_9; // error! + + +See also +-------- + +|Configuration|, |BOOST_MPL_LIMIT_VECTOR_SIZE| + diff --git a/doc/src/refmanual/string.rst b/doc/src/refmanual/string.rst index 833762b..7264041 100644 --- a/doc/src/refmanual/string.rst +++ b/doc/src/refmanual/string.rst @@ -12,8 +12,8 @@ Description ----------- ``string`` is a |variadic|, `bidirectional`__, `extensible`__ |Integral Sequence Wrapper| of -characters that supports constant-time insertion and removal of elements at both ends, and -linear-time insertion and removal of elements in the middle. The parameters to ``string`` +characters that supports amortized constant-time insertion and removal of elements at both ends, +and linear-time insertion and removal of elements in the middle. The parameters to ``string`` are multi-character literals, giving a somewhat readable syntax for compile-time strings. ``string`` can also be an argument to the ``c_str`` metafunction, which generates a null-terminated character array that facilitates interoperability with runtime string diff --git a/include/boost/mpl/limits/string.hpp b/include/boost/mpl/limits/string.hpp new file mode 100644 index 0000000..eb85aa3 --- /dev/null +++ b/include/boost/mpl/limits/string.hpp @@ -0,0 +1,21 @@ + +#ifndef BOOST_MPL_LIMITS_STRING_HPP_INCLUDED +#define BOOST_MPL_LIMITS_STRING_HPP_INCLUDED + +// Copyright Eric Niebler 2009 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id: string.hpp 49239 2009-04-01 09:10:26Z eric_niebler $ +// $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ +// $Revision: 49239 $ + +#if !defined(BOOST_MPL_LIMIT_STRING_SIZE) +# define BOOST_MPL_LIMIT_STRING_SIZE 32 +#endif + +#endif // BOOST_MPL_LIMITS_STRING_HPP_INCLUDED diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index f5877d4..ab34926 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -14,11 +14,13 @@ // $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ // $Revision: 49239 $ +#include #include #include #include #include #include +#include #include #include #include @@ -37,11 +39,7 @@ namespace boost { namespace mpl { - #ifndef BOOST_MPL_STRING_MAX_LENGTH - # define BOOST_MPL_STRING_MAX_LENGTH 32 - #endif - - #define BOOST_MPL_STRING_MAX_PARAMS BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_STRING_MAX_LENGTH, 3), 4) + #define BOOST_MPL_STRING_MAX_PARAMS BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_LIMIT_STRING_SIZE, 3), 4) #define BOOST_MPL_MULTICHAR_LENGTH(c) (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) #define BOOST_MPL_MULTICHAR_AT(c,i) (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) @@ -135,7 +133,7 @@ namespace boost { namespace mpl struct apply { BOOST_MPL_ASSERT_MSG( - (BOOST_MPL_STRING_MAX_LENGTH != mpl::size::type::value) + (BOOST_MPL_LIMIT_STRING_SIZE != mpl::size::type::value) , PUSH_BACK_FAILED_MPL_STRING_IS_FULL , (Sequence) ); @@ -228,7 +226,7 @@ namespace boost { namespace mpl struct apply { BOOST_MPL_ASSERT_MSG( - (BOOST_MPL_STRING_MAX_LENGTH != mpl::size::type::value) + (BOOST_MPL_LIMIT_STRING_SIZE != mpl::size::type::value) , PUSH_FRONT_FAILED_MPL_STRING_IS_FULL , (Sequence) ); @@ -479,7 +477,7 @@ namespace boost { namespace mpl typedef \ typename mpl::aux_::next_unless::type \ BOOST_PP_CAT(i, BOOST_PP_INC(n)); - BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) + BOOST_PP_REPEAT(BOOST_MPL_LIMIT_STRING_SIZE, M0, ~) #undef M0 typedef c_str type; @@ -491,7 +489,7 @@ namespace boost { namespace mpl { #define M0(z, n, data) \ mpl::aux_::deref_unless::type::value, - BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_LENGTH, M0, ~) + BOOST_PP_REPEAT(BOOST_MPL_LIMIT_STRING_SIZE, M0, ~) #undef M0 '\0' }; From d88ee00afee69ee8047ec4fb83dc9810b123b324 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sun, 12 Apr 2009 23:07:37 +0000 Subject: [PATCH 15/39] saving some additional template instantiations [SVN r52361] --- include/boost/mpl/string.hpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index ab34926..17b29f3 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -390,31 +390,25 @@ namespace boost { namespace mpl template \ struct string_iterator, n, J> \ { \ + enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) }; \ typedef mpl::string string; \ typedef std::bidirectional_iterator_tag category; \ typedef \ - typename mpl::if_c< \ - (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) \ - , mpl::string_iterator \ - , mpl::string_iterator \ - >::type \ + mpl::string_iterator \ next; \ typedef \ - mpl::string_iterator \ + mpl::string_iterator \ prior; \ typedef mpl::char_ type; \ }; \ template \ struct string_iterator, n, 0> \ { \ + enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) }; \ typedef mpl::string string; \ typedef std::bidirectional_iterator_tag category; \ typedef \ - typename mpl::if_c< \ - (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) \ - , mpl::string_iterator \ - , mpl::string_iterator \ - >::type \ + mpl::string_iterator \ next; \ typedef \ mpl::string_iterator< \ From 81135e4e9180e4220ac717d1f17cd42f55795468 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 20 Apr 2009 08:41:04 +0000 Subject: [PATCH 16/39] terminology.rst -> Terminology.rst (step 1) [SVN r52502] --- doc/src/refmanual/terminology.rst | 47 ------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 doc/src/refmanual/terminology.rst diff --git a/doc/src/refmanual/terminology.rst b/doc/src/refmanual/terminology.rst deleted file mode 100644 index f9f3ccc..0000000 --- a/doc/src/refmanual/terminology.rst +++ /dev/null @@ -1,47 +0,0 @@ - -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -.. _`Overloaded name`: -.. |Overloaded name link| replace:: `Overloaded name`_ - -Overloaded name - Overloaded name is a term used in this reference documentation to designate - a metafunction providing more than one public interface. In reality, - class template overloading is nonexistent and the referenced functionality - is implemented by other, unspecified, means. - - -.. |overloaded name| replace:: `overloaded name <|Overloaded name link|>`__ - - -.. _`Concept-identical`: -.. |Concept-identical link| replace:: `Concept-identical`_ - -Concept-identical - A sequence ``s1`` is said to be concept-identical to a sequence ``s2`` if - ``s1`` and ``s2`` model the exact same set of concepts. - - -.. _`Bind expression`: -.. |Bind expression link| replace:: `Bind expression`_ - -Bind expression - A bind expression is simply that |--| an instantiation of one of the |bind| - class templates. For instance, these are all bind expressions:: - - bind< quote3, _1,int,long > - bind< _1, bind< plus<>, int_<5>, _2> > - bind< times<>, int_<2>, int_<2> > - - and these are not:: - - if_< _1, bind< plus<>, int_<5>, _2>, _2 > - protect< bind< quote3, _1,int,long > > - _2 - - -.. |bind expression| replace:: `bind expression <|Bind expression link|>`__ -.. |concept-identical| replace:: `concept-identical <|Concept-identical link|>`__ From cec3e22b637d61fdb00b6546713fa7d039ad5b47 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 20 Apr 2009 08:43:50 +0000 Subject: [PATCH 17/39] terminology.rst -> Terminology.rst (step 2) [SVN r52503] --- doc/src/refmanual/Terminology.rst | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 doc/src/refmanual/Terminology.rst diff --git a/doc/src/refmanual/Terminology.rst b/doc/src/refmanual/Terminology.rst new file mode 100644 index 0000000..f9f3ccc --- /dev/null +++ b/doc/src/refmanual/Terminology.rst @@ -0,0 +1,47 @@ + +.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Distributed under the Boost +.. Software License, Version 1.0. (See accompanying +.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +.. _`Overloaded name`: +.. |Overloaded name link| replace:: `Overloaded name`_ + +Overloaded name + Overloaded name is a term used in this reference documentation to designate + a metafunction providing more than one public interface. In reality, + class template overloading is nonexistent and the referenced functionality + is implemented by other, unspecified, means. + + +.. |overloaded name| replace:: `overloaded name <|Overloaded name link|>`__ + + +.. _`Concept-identical`: +.. |Concept-identical link| replace:: `Concept-identical`_ + +Concept-identical + A sequence ``s1`` is said to be concept-identical to a sequence ``s2`` if + ``s1`` and ``s2`` model the exact same set of concepts. + + +.. _`Bind expression`: +.. |Bind expression link| replace:: `Bind expression`_ + +Bind expression + A bind expression is simply that |--| an instantiation of one of the |bind| + class templates. For instance, these are all bind expressions:: + + bind< quote3, _1,int,long > + bind< _1, bind< plus<>, int_<5>, _2> > + bind< times<>, int_<2>, int_<2> > + + and these are not:: + + if_< _1, bind< plus<>, int_<5>, _2>, _2 > + protect< bind< quote3, _1,int,long > > + _2 + + +.. |bind expression| replace:: `bind expression <|Bind expression link|>`__ +.. |concept-identical| replace:: `concept-identical <|Concept-identical link|>`__ From 9708dbc4541dc0927c6b72661dc8fcfd21ac841c Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 22 Apr 2009 16:36:18 +0000 Subject: [PATCH 18/39] add workaround for sun [SVN r52542] --- include/boost/mpl/string.hpp | 23 ++++++++++++++++++++++- test/string.cpp | 6 +++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 17b29f3..7e1c648 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -13,11 +13,18 @@ // $Id: string.hpp 49239 2009-04-01 09:10:26Z eric_niebler $ // $Date: 2009-04-01 02:10:26 -0700 (Wed, 1 Apr 2009) $ // $Revision: 49239 $ +// +// Thanks to: +// Dmitry Goncharov for porting this to the Sun compiler +#include +#include #include +#include #include #include #include +#include #include #include #include @@ -243,11 +250,13 @@ namespace boost { namespace mpl type; }; + #if !BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) template struct apply, Value, false> { typedef mpl::string<(char)Value::value> type; }; + #endif #define M0(z,n,data) \ template \ @@ -272,7 +281,19 @@ namespace boost { namespace mpl ((((unsigned char)Value::value)<<(BOOST_MPL_MULTICHAR_LENGTH(C0)*8))|C0) , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) > - type; + type0; + + #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) + typedef + typename mpl::if_< + mpl::empty > + , mpl::string<(char)Value::value> + , type0 + >::type + type; + #else + typedef type0 type; + #endif }; }; diff --git a/test/string.cpp b/test/string.cpp index bc6e23c..f50073b 100644 --- a/test/string.cpp +++ b/test/string.cpp @@ -293,6 +293,9 @@ int main() BOOST_MPL_ASSERT((boost::is_same >)); } + BOOST_MPL_ASSERT((mpl::empty >)); + BOOST_MPL_ASSERT_NOT((mpl::empty >)); + // testing push_front { typedef mpl::push_front, mpl::char_<'a'> >::type t1; @@ -343,9 +346,6 @@ int main() mpl::for_each >(push_char(result)); BOOST_TEST("Hello world!" == result); - BOOST_MPL_ASSERT((mpl::empty >)); - BOOST_MPL_ASSERT_NOT((mpl::empty >)); - BOOST_TEST(('h' == mpl::front >::type())); BOOST_TEST(('!' == mpl::back >::type())); From dfc596a7bf729b510feed6ed817744ad4f1ddbe4 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Thu, 23 Apr 2009 21:46:30 +0000 Subject: [PATCH 19/39] isolate implementation-defined behavior in macros for easier portability [SVN r52577] --- include/boost/mpl/string.hpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 7e1c648..a965e6c 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -46,10 +46,28 @@ namespace boost { namespace mpl { - #define BOOST_MPL_STRING_MAX_PARAMS BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_LIMIT_STRING_SIZE, 3), 4) + #define BOOST_MPL_STRING_MAX_PARAMS \ + BOOST_PP_DIV(BOOST_PP_ADD(BOOST_MPL_LIMIT_STRING_SIZE, 3), 4) - #define BOOST_MPL_MULTICHAR_LENGTH(c) (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) - #define BOOST_MPL_MULTICHAR_AT(c,i) (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + // Low-level bit-twiddling is done by macros. Any implementation-defined behavior of + // multi-character literals should be localized to these macros. + #define BOOST_MPL_MULTICHAR_LENGTH(c) \ + (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) + + #define BOOST_MPL_MULTICHAR_AT(c,i) \ + (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + + #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ + (((c)<<8)|(unsigned char)(i)) + + #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ + ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) + + #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ + ((c)>>8) + + #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) struct string_tag; struct string_iterator_tag; @@ -173,7 +191,7 @@ namespace boost { namespace mpl BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ ?BOOST_PP_CAT(C,BOOST_PP_DEC(n)) \ - :(BOOST_PP_CAT(C,BOOST_PP_DEC(n))<<8)|(unsigned char)Value::value \ + :BOOST_MPL_MULTICHAR_PUSH_BACK(BOOST_PP_CAT(C,BOOST_PP_DEC(n)), Value::value) \ , (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ ?(char)Value::value \ :0 \ @@ -190,7 +208,7 @@ namespace boost { namespace mpl typedef mpl::string< BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS), C) - , (BOOST_PP_CAT(C,BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS))<<8)|(unsigned char)Value::value + , BOOST_MPL_MULTICHAR_PUSH_BACK(BOOST_PP_CAT(C,BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS)), Value::value) > type; }; @@ -214,7 +232,7 @@ namespace boost { namespace mpl mpl::string< \ BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>>8) \ + BOOST_MPL_MULTICHAR_POP_BACK(BOOST_PP_CAT(C,BOOST_PP_DEC(n))) \ > \ type; \ }; @@ -278,7 +296,7 @@ namespace boost { namespace mpl { typedef mpl::string< - ((((unsigned char)Value::value)<<(BOOST_MPL_MULTICHAR_LENGTH(C0)*8))|C0) + BOOST_MPL_MULTICHAR_PUSH_FRONT(C0, Value::value) , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) > type0; @@ -324,7 +342,7 @@ namespace boost { namespace mpl { typedef mpl::string< - (((1<<((BOOST_MPL_MULTICHAR_LENGTH(C0)-1)*8))-1)&C0) + BOOST_MPL_MULTICHAR_POP_FRONT(C0) , BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C) > type; From 58be5a2bd538127cfe3d439134a36ab66b9f0e01 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Fri, 24 Apr 2009 15:23:40 +0000 Subject: [PATCH 20/39] portability patch for sunpro on little-endian platforms [SVN r52579] --- include/boost/mpl/string.hpp | 43 +++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index a965e6c..0dd8554 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -51,23 +52,45 @@ namespace boost { namespace mpl // Low-level bit-twiddling is done by macros. Any implementation-defined behavior of // multi-character literals should be localized to these macros. + #define BOOST_MPL_MULTICHAR_LENGTH(c) \ (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) - #define BOOST_MPL_MULTICHAR_AT(c,i) \ - (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + #if defined(BOOST_LITTLE_ENDIAN) && defined(__SUNPRO_CC) - #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ - (((c)<<8)|(unsigned char)(i)) + #define BOOST_MPL_MULTICHAR_AT(c,i) \ + (char)(0xff&(c>>(8*(std::size_t)(i)))) - #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ - ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) + #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ + ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) - #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ - ((c)>>8) + #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ + (((c)<<8)|(unsigned char)(i)) - #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ - (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + + #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ + ((c)>>8) + + #else + + #define BOOST_MPL_MULTICHAR_AT(c,i) \ + (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + + #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ + (((c)<<8)|(unsigned char)(i)) + + #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ + ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) + + #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ + ((c)>>8) + + #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + + #endif struct string_tag; struct string_iterator_tag; From 14b652ed902d9a1901c9de2ada482cca25fe7f0a Mon Sep 17 00:00:00 2001 From: Jeremiah Willcock Date: Wed, 20 May 2009 19:19:00 +0000 Subject: [PATCH 21/39] Fixed most tab and min/max issues from trunk inspection report [SVN r53141] --- include/boost/mpl/string.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 0dd8554..ce7c782 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -68,7 +68,7 @@ namespace boost { namespace mpl (((c)<<8)|(unsigned char)(i)) #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ - (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ ((c)>>8) @@ -329,12 +329,12 @@ namespace boost { namespace mpl typename mpl::if_< mpl::empty > , mpl::string<(char)Value::value> - , type0 - >::type - type; - #else - typedef type0 type; - #endif + , type0 + >::type + type; + #else + typedef type0 type; + #endif }; }; From d53111cfc8b767ee8f69a9cca501a0adf2e3c5c3 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Fri, 22 May 2009 20:06:55 +0000 Subject: [PATCH 22/39] Fixed a bogus preprocessor directive [SVN r53188] --- include/boost/mpl/aux_/config/compiler.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/mpl/aux_/config/compiler.hpp b/include/boost/mpl/aux_/config/compiler.hpp index a98046b..7d3e3b6 100644 --- a/include/boost/mpl/aux_/config/compiler.hpp +++ b/include/boost/mpl/aux_/config/compiler.hpp @@ -35,7 +35,7 @@ # elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) # if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) # define BOOST_MPL_CFG_COMPILER_DIR bcc551 -# elseif BOOST_WORKAROUND(__BORLANDC__, >= 0x590) +# elif BOOST_WORKAROUND(__BORLANDC__, >= 0x590) # define BOOST_MPL_CFG_COMPILER_DIR bcc # else # define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590 From 4169d45c821b98abed5a6b25d1cc6bd9439e1d0f Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 1 Jun 2009 11:50:35 +0000 Subject: [PATCH 23/39] Bring up MPL refmanual docs generation [SVN r53532] --- doc/src/build.py | 26 ++-- .../docutils/writers/html4_refdoc/__init__.py | 24 +++- doc/src/refmanual/Algorithms.rst | 5 +- doc/src/refmanual/AssociativeSequence.rst | 10 +- doc/src/refmanual/CFG_NO_PREPROCESSED.rst | 5 +- .../refmanual/Metafunctions-Arithmetic.rst | 5 +- doc/src/refmanual/Metafunctions-Bitwise.rst | 5 +- .../refmanual/Metafunctions-Comparisons.rst | 5 +- .../refmanual/Metafunctions-Composition.rst | 10 +- .../refmanual/Metafunctions-Conditional.rst | 4 +- .../refmanual/Metafunctions-Invocation.rst | 4 +- doc/src/refmanual/Metafunctions-Logical.rst | 6 +- doc/src/refmanual/Metafunctions-Trivial.rst | 5 +- doc/src/refmanual/Metafunctions-Type.rst | 4 +- doc/src/refmanual/Placeholders.rst | 21 +++- doc/src/refmanual/Sequences-Concepts.rst | 5 +- .../refmanual/TagDispatchedMetafunction.rst | 9 +- doc/src/refmanual/Terminology.rst | 13 +- doc/src/refmanual/VariadicSequence.rst | 14 ++- doc/src/refmanual/bool_.rst | 11 +- doc/src/refmanual/inserter_.rst | 10 +- doc/src/refmanual/refmanual.py | 12 +- doc/src/refmanual/refmanual.rst | 30 +---- doc/style.css | 115 ++++++++++++++---- 24 files changed, 228 insertions(+), 130 deletions(-) diff --git a/doc/src/build.py b/doc/src/build.py index 0fbd80f..41a028b 100755 --- a/doc/src/build.py +++ b/doc/src/build.py @@ -1,4 +1,4 @@ -# Copyright (c) Aleksey Gurtovoy 2008 +# Copyright (c) Aleksey Gurtovoy 2008-2009 # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at @@ -10,21 +10,21 @@ import os def build(): - def cleanup(): - if os.path.exists( 'refmanual.gen' ): - os.unlink( 'refmanual.gen' ) + def cleanup(): + if os.path.exists( 'refmanual.gen' ): + os.unlink( 'refmanual.gen' ) - if os.path.exists( 'build' ): - shutil.rmtree( 'build' ) + if os.path.exists( 'build' ): + shutil.rmtree( 'build' ) - def generate_html(): - os.system( 'python refmanual.py' ) - os.mkdir( 'build' ) - os.system( 'rst2htmlrefdoc.py -g -d -t --no-frames --traceback refmanual.gen build/refmanual.html' ) + def generate_html(): + os.system( 'python refmanual.py' ) + os.mkdir( 'build' ) + os.system( 'rst2htmlrefdoc.py -g -d -t --no-frames --dont-copy-stylesheet --stylesheet-path=style.css --traceback refmanual.gen build/refmanual.html' ) - os.chdir( 'refmanual' ) - cleanup() - generate_html() + os.chdir( 'refmanual' ) + cleanup() + generate_html() build() diff --git a/doc/src/docutils/writers/html4_refdoc/__init__.py b/doc/src/docutils/writers/html4_refdoc/__init__.py index 7c6eaf1..ba3395a 100755 --- a/doc/src/docutils/writers/html4_refdoc/__init__.py +++ b/doc/src/docutils/writers/html4_refdoc/__init__.py @@ -52,6 +52,12 @@ class refdoc_translator(html4_frames.frame_pages_translator): self.__super.depart_title(self, node) + def visit_table(self, node): + self = self.active_visitor() + self.body.append( + self.starttag(node, 'table', CLASS='docutils table', border="1")) + + def visit_reference(self, node): self.in_reference = 1 if len(node) == 1 and isinstance(node[0], nodes.literal) and node[0].has_key('class'): @@ -161,10 +167,24 @@ class refdoc_translator(html4_frames.frame_pages_translator): identifier = match.group(2) if not base.document.has_name( identifier.lower() ): return self.encode(match.group(0)) - + + def get_section_id( id ): + node = base.document.ids[ id ] + if isinstance( node, nodes.section ): + return id + + if isinstance( node, nodes.target ): + return get_section_id( node.get( 'refid' ) ) + + return None + + id = get_section_id( base.document.nameids[ identifier.lower() ] ) + if not id: + return self.encode(match.group(0)) + result = self.encode(match.group(1)) result += '%s' \ - % ( base._chunk_ref( base._active_chunk_id(), base.document.nameids[identifier.lower()] ) + % ( base._chunk_ref( base._active_chunk_id(), id ) , self.encode(identifier) ) diff --git a/doc/src/refmanual/Algorithms.rst b/doc/src/refmanual/Algorithms.rst index 5d310e4..1494120 100644 --- a/doc/src/refmanual/Algorithms.rst +++ b/doc/src/refmanual/Algorithms.rst @@ -1,5 +1,5 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -41,4 +41,5 @@ concept. .. |Output Iterator| replace:: `Output Iterator `__ -.. |sequence algorithms| replace:: `sequence algorithms <|Algorithms link|>`__ +.. |sequence algorithms| replace:: `sequence algorithms`_ +.. _`sequence algorithms`: `Algorithms`_ diff --git a/doc/src/refmanual/AssociativeSequence.rst b/doc/src/refmanual/AssociativeSequence.rst index bffb191..3685670 100644 --- a/doc/src/refmanual/AssociativeSequence.rst +++ b/doc/src/refmanual/AssociativeSequence.rst @@ -1,6 +1,6 @@ .. Sequences/Concepts//Associative Sequence |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -114,8 +114,8 @@ See also |Sequences|, |Extensible Associative Sequence|, |has_key|, |count|, |order|, |at|, |key_type|, |value_type| -.. |key| replace:: `key <|key-part_link|>`__ -.. |key-part_link| replace:: `key-part`_ +.. |key| replace:: `key`_ +.. _`key`: `key-part`_ -.. |value| replace:: `value <|value-part_link|>`__ -.. |value-part_link| replace:: `value-part`_ +.. |value| replace:: `value`_ +.. _`value`: `value-part`_ diff --git a/doc/src/refmanual/CFG_NO_PREPROCESSED.rst b/doc/src/refmanual/CFG_NO_PREPROCESSED.rst index fb98df8..69d4df6 100644 --- a/doc/src/refmanual/CFG_NO_PREPROCESSED.rst +++ b/doc/src/refmanual/CFG_NO_PREPROCESSED.rst @@ -1,6 +1,6 @@ .. Macros/Configuration//BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -40,4 +40,5 @@ See also |Macros|, |Configuration| -.. |preprocessed headers| replace:: `preprocessed headers <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS link|>`__ +.. |preprocessed headers| replace:: `preprocessed headers`_ +.. _`preprocessed headers`: `BOOST_MPL_CFG_NO_PREPROCESSED`_ diff --git a/doc/src/refmanual/Metafunctions-Arithmetic.rst b/doc/src/refmanual/Metafunctions-Arithmetic.rst index 23af0d1..bbe600c 100644 --- a/doc/src/refmanual/Metafunctions-Arithmetic.rst +++ b/doc/src/refmanual/Metafunctions-Arithmetic.rst @@ -1,8 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) .. |Arithmetic Operations| replace:: `Arithmetic Operations`_ -.. |arithmetic| replace:: `arithmetic <|Arithmetic Operations|>`__ +.. |arithmetic| replace:: arithmetic_ +.. _arithmetic: `Arithmetic Operations`_ diff --git a/doc/src/refmanual/Metafunctions-Bitwise.rst b/doc/src/refmanual/Metafunctions-Bitwise.rst index 4ae5c10..3bd7085 100644 --- a/doc/src/refmanual/Metafunctions-Bitwise.rst +++ b/doc/src/refmanual/Metafunctions-Bitwise.rst @@ -1,8 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) .. |Bitwise Operations| replace:: `Bitwise Operations`_ -.. |bitwise| replace:: `bitwise <|Bitwise Operations|>`__ +.. |bitwise| replace:: `bitwise`_ +.. _`bitwise`: `Bitwise Operations`_ diff --git a/doc/src/refmanual/Metafunctions-Comparisons.rst b/doc/src/refmanual/Metafunctions-Comparisons.rst index 357b03f..9a8541b 100644 --- a/doc/src/refmanual/Metafunctions-Comparisons.rst +++ b/doc/src/refmanual/Metafunctions-Comparisons.rst @@ -1,8 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) .. |Comparisons| replace:: `Comparisons`_ -.. |comparison| replace:: `comparison <|Comparisons|>`__ +.. |comparison| replace:: `comparison`_ +.. _`comparison`: `Comparisons`_ diff --git a/doc/src/refmanual/Metafunctions-Composition.rst b/doc/src/refmanual/Metafunctions-Composition.rst index c8a3c80..0d7482b 100644 --- a/doc/src/refmanual/Metafunctions-Composition.rst +++ b/doc/src/refmanual/Metafunctions-Composition.rst @@ -1,9 +1,13 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + .. |Composition and Argument Binding| replace:: `Composition and Argument Binding`_ -.. |composition| replace:: `composition <|Composition and Argument Binding link|>`__ -.. |argument binding| replace:: `argument binding <|Composition and Argument Binding link|>`__ +.. |composition| replace:: `composition`_ +.. _`composition`: `Composition and Argument Binding`_ + +.. |argument binding| replace:: `argument binding`_ +.. _`argument binding`: `Composition and Argument Binding`_ diff --git a/doc/src/refmanual/Metafunctions-Conditional.rst b/doc/src/refmanual/Metafunctions-Conditional.rst index 58dd6c6..f85f197 100644 --- a/doc/src/refmanual/Metafunctions-Conditional.rst +++ b/doc/src/refmanual/Metafunctions-Conditional.rst @@ -1,7 +1,7 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -.. |control flow| replace:: `control flow <|Control Flow link|>`__ +.. |control flow| replace:: `control flow`_ diff --git a/doc/src/refmanual/Metafunctions-Invocation.rst b/doc/src/refmanual/Metafunctions-Invocation.rst index f842791..b32c367 100644 --- a/doc/src/refmanual/Metafunctions-Invocation.rst +++ b/doc/src/refmanual/Metafunctions-Invocation.rst @@ -1,7 +1,7 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -.. |invocation| replace:: `invocation <|Invocation link|>`__ +.. |invocation| replace:: `invocation`_ diff --git a/doc/src/refmanual/Metafunctions-Logical.rst b/doc/src/refmanual/Metafunctions-Logical.rst index 5bc3aa6..41402b2 100644 --- a/doc/src/refmanual/Metafunctions-Logical.rst +++ b/doc/src/refmanual/Metafunctions-Logical.rst @@ -1,9 +1,11 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -.. |logical| replace:: `logical <|Logical Operations|>`__ +.. |logical| replace:: `logical`_ +.. _`logical`: `Logical Operations`_ + .. |Logical Operations| replace:: `Logical Operations`_ .. |logical operations| replace:: `logical operations`_ diff --git a/doc/src/refmanual/Metafunctions-Trivial.rst b/doc/src/refmanual/Metafunctions-Trivial.rst index a397f56..5373e0b 100644 --- a/doc/src/refmanual/Metafunctions-Trivial.rst +++ b/doc/src/refmanual/Metafunctions-Trivial.rst @@ -1,5 +1,5 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -53,4 +53,5 @@ See Also |Metafunctions|, |Trivial Metafunction| -.. |Trivial Metafunctions| replace:: `Trivial Metafunctions <|Trivial link|>`__ +.. |Trivial Metafunctions| replace:: `Trivial Metafunctions`_ +.. _`Trivial Metafunctions`: `label-Metafunctions-Trivial`_ diff --git a/doc/src/refmanual/Metafunctions-Type.rst b/doc/src/refmanual/Metafunctions-Type.rst index 2515e84..78d7f98 100644 --- a/doc/src/refmanual/Metafunctions-Type.rst +++ b/doc/src/refmanual/Metafunctions-Type.rst @@ -1,7 +1,7 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -.. |type selection| replace:: `type selection <|Type Selection link|>`__ +.. |type selection| replace:: `type selection`_ diff --git a/doc/src/refmanual/Placeholders.rst b/doc/src/refmanual/Placeholders.rst index 742a1da..bcb34b5 100644 --- a/doc/src/refmanual/Placeholders.rst +++ b/doc/src/refmanual/Placeholders.rst @@ -1,12 +1,14 @@ .. Metafunctions/Composition and Argument Binding//_1,_2,..._n |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Placeholders ============ +.. _`placeholder`: + Synopsis -------- @@ -98,3 +100,20 @@ See also -------- |Composition and Argument Binding|, |arg|, |lambda|, |bind|, |apply|, |apply_wrap| + + +.. |placeholder| replace:: `placeholder`_ + +.. |_1| replace:: `_1`_ +.. |_2| replace:: `_2`_ +.. |_3| replace:: `_3`_ +.. |_4| replace:: `_4`_ +.. |_5| replace:: `_5`_ + +.. _`_1`: `Placeholders`_ +.. _`_2`: `Placeholders`_ +.. _`_3`: `Placeholders`_ +.. _`_4`: `Placeholders`_ +.. _`_5`: `Placeholders`_ + +.. |_1,_2,..._n| replace:: |_1|, |_2|, |_3|,\ |...| diff --git a/doc/src/refmanual/Sequences-Concepts.rst b/doc/src/refmanual/Sequences-Concepts.rst index e3b6736..2d54542 100644 --- a/doc/src/refmanual/Sequences-Concepts.rst +++ b/doc/src/refmanual/Sequences-Concepts.rst @@ -1,5 +1,5 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -29,4 +29,5 @@ The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL the common parts of different sequence classes' specifications. -.. |sequence concepts| replace:: `sequence concepts <|Sequences/Concepts link|>`__ +.. |sequence concepts| replace:: `sequence concepts`_ +.. _`sequence concepts`: `label-Sequences-Concepts`_ diff --git a/doc/src/refmanual/TagDispatchedMetafunction.rst b/doc/src/refmanual/TagDispatchedMetafunction.rst index 0df080b..d0446fe 100644 --- a/doc/src/refmanual/TagDispatchedMetafunction.rst +++ b/doc/src/refmanual/TagDispatchedMetafunction.rst @@ -1,6 +1,6 @@ .. Metafunctions/Concepts//Tag Dispatched Metafunction |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -161,5 +161,8 @@ See also |Metafunction|, |Metafunction Class|, |Numeric Metafunction| -.. |tag-metafunction| replace:: `tag metafunction <|tag-metafunction link|>`__ -.. |tag dispatched| replace:: `tag dispatched <|Tag Dispatched Metafunction link|>`__ +.. |tag-metafunction| replace:: `tag metafunctions`_ +.. _`tag metafunctions`: `tag-metafunction`_ + +.. |tag dispatched| replace:: `tag dispatched`_ +.. _`tag dispatched`: `Tag Dispatched Metafunction`_ diff --git a/doc/src/refmanual/Terminology.rst b/doc/src/refmanual/Terminology.rst index f9f3ccc..67c4400 100644 --- a/doc/src/refmanual/Terminology.rst +++ b/doc/src/refmanual/Terminology.rst @@ -1,11 +1,10 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) .. _`Overloaded name`: -.. |Overloaded name link| replace:: `Overloaded name`_ Overloaded name Overloaded name is a term used in this reference documentation to designate @@ -14,11 +13,7 @@ Overloaded name is implemented by other, unspecified, means. -.. |overloaded name| replace:: `overloaded name <|Overloaded name link|>`__ - - .. _`Concept-identical`: -.. |Concept-identical link| replace:: `Concept-identical`_ Concept-identical A sequence ``s1`` is said to be concept-identical to a sequence ``s2`` if @@ -26,7 +21,6 @@ Concept-identical .. _`Bind expression`: -.. |Bind expression link| replace:: `Bind expression`_ Bind expression A bind expression is simply that |--| an instantiation of one of the |bind| @@ -43,5 +37,6 @@ Bind expression _2 -.. |bind expression| replace:: `bind expression <|Bind expression link|>`__ -.. |concept-identical| replace:: `concept-identical <|Concept-identical link|>`__ +.. |overloaded name| replace:: `overloaded name`_ +.. |concept-identical| replace:: `concept-identical`_ +.. |bind expression| replace:: `bind expression`_ diff --git a/doc/src/refmanual/VariadicSequence.rst b/doc/src/refmanual/VariadicSequence.rst index 8ebae8f..926d4ce 100644 --- a/doc/src/refmanual/VariadicSequence.rst +++ b/doc/src/refmanual/VariadicSequence.rst @@ -1,6 +1,6 @@ .. Sequences/Concepts//Variadic Sequence |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -113,7 +113,11 @@ See also |Sequences|, |Configuration|, |Integral Sequence Wrapper| -.. |variadic| replace:: `variadic <|Variadic Sequence link|>`__ -.. |variadic forms| replace:: `variadic forms <|Variadic Sequence link|>`__ -.. |numbered forms| replace:: `numbered forms <|Variadic Sequence link|>`__ -.. |Variadic Sequence link| replace:: `Variadic Sequence`_ +.. |variadic| replace:: `variadic`_ +.. _`variadic`: `Variadic Sequence`_ + +.. |variadic forms| replace:: `variadic forms`_ +.. _`variadic forms`: `Variadic Sequence`_ + +.. |numbered forms| replace:: `numbered forms`_ +.. _`numbered forms`: `Variadic Sequence`_ diff --git a/doc/src/refmanual/bool_.rst b/doc/src/refmanual/bool_.rst index d941a4f..bbe12fe 100644 --- a/doc/src/refmanual/bool_.rst +++ b/doc/src/refmanual/bool_.rst @@ -1,6 +1,6 @@ .. Data Types/Numeric//bool_ |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -76,7 +76,7 @@ Example .. parsed-literal:: BOOST_MPL_ASSERT(( is_same< bool_::value_type, bool > )); - BOOST_MPL_ASSERT(( is_same< bool_, |true_| > )); } + BOOST_MPL_ASSERT(( is_same< bool_, true\_ > )); } BOOST_MPL_ASSERT(( is_same< bool_::type, bool_ > )); BOOST_MPL_ASSERT_RELATION( bool_::value, ==, true ); assert( bool_() == true ); @@ -88,5 +88,8 @@ See also |Data Types|, |Integral Constant|, |int_|, |long_|, |integral_c| -.. |true_| replace:: ```true_`` <|bool_ link|>`__ -.. |false_| replace:: ```false_`` <|bool_ link|>`__ +.. |true_| replace:: `true_`_ +.. _`true_`: `bool_`_ + +.. |false_| replace:: `false_`_ +.. _`false_`: `bool_`_ diff --git a/doc/src/refmanual/inserter_.rst b/doc/src/refmanual/inserter_.rst index 3dd6bc1..ecdfee5 100644 --- a/doc/src/refmanual/inserter_.rst +++ b/doc/src/refmanual/inserter_.rst @@ -1,12 +1,12 @@ .. Algorithms/Inserters//inserter -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -|+inserter+| -================ +|inserter(title)| +================= .. _`inserter_`: @@ -100,5 +100,5 @@ See also |Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter| -.. |+inserter+| replace:: inserter -.. |inserter| replace:: ':refentry:`inserter` <|inserter_ link|>'__ +.. |inserter(title)| replace:: inserter +.. |inserter| replace:: ':refentry:`inserter` <|inserter_|>'__ diff --git a/doc/src/refmanual/refmanual.py b/doc/src/refmanual/refmanual.py index ef15671..1879e19 100644 --- a/doc/src/refmanual/refmanual.py +++ b/doc/src/refmanual/refmanual.py @@ -1,4 +1,4 @@ -# Copyright (c) Aleksey Gurtovoy 2001-2007 +# Copyright (c) Aleksey Gurtovoy 2001-2009 # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at @@ -20,8 +20,7 @@ def __section_header(section): underline = underlines[len(parts) - 1] * len(parts[-1]) if len(parts) > 0: hidden_target = '.. _`label-%s`:' % '-'.join( parts ) - replacement_link = '.. |%s link| replace:: `label-%s`_' % ( '/'.join( parts ), '-'.join( parts ) ) - return '\n%s\n%s\n%s\n%s\n\n' % (parts[-1], underline, hidden_target, replacement_link ) + return '\n%s\n%s\n%s\n\n' % (parts[-1], underline, hidden_target ) else: return '\n%s\n%s\n\n' % (parts[-1], underline ) @@ -40,15 +39,12 @@ def __include_page( output, page, name = None ): else: ref = '/'.join( page.split('.')[0].split('-') ) if ref.upper() == ref or ref.lower() == ref: output.write( - ( '.. |%(ref)s| replace:: `|%(ref)s refentry| <|%(ref)s link|>`__\n' - + '.. |%(ref)s refentry| replace:: :refentry:`%(ref)s`\n' - + '.. |%(ref)s link| replace:: `%(ref)s`_\n' - ) + ( '.. |%(ref)s| replace:: `%(ref)s`_\n' ) % { 'ref': ref } ) else: if ref.find( '/' ) == -1: - ref = ' '.join( filter( lambda x: len(x) > 0, re.split( '([A-Z][a-z]+)', ref ) ) ) + ref = ' '.join( filter( lambda x: len( x.strip() ) > 0, re.split( '([A-Z][a-z]+)', ref ) ) ) output.write( '.. |%(ref)s| replace:: `%(ref)s`_\n' % { 'ref': ref } ) modtime = time.gmtime( os.stat( page ).st_mtime ) diff --git a/doc/src/refmanual/refmanual.rst b/doc/src/refmanual/refmanual.rst index 604e2db..90497a0 100644 --- a/doc/src/refmanual/refmanual.rst +++ b/doc/src/refmanual/refmanual.rst @@ -1,5 +1,5 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. +.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. .. Distributed under the Boost .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -7,7 +7,7 @@ The MPL Reference Manual ************************ -:Copyright: Copyright © Aleksey Gurtovoy and David Abrahams, 2001-2007. +:Copyright: Copyright © Aleksey Gurtovoy and David Abrahams, 2001-2009. :License: Distributed under the Boost Software License, Version 1.0. (See accompanying file ``LICENSE_1_0.txt`` or copy at @@ -84,23 +84,6 @@ __ http://www.boost.org/LICENSE_1_0.txt .. |O(1)| replace:: *O(1)* -.. |_1| replace:: `|_1 refentry| <|Placeholders|>`__ -.. |_2| replace:: `|_2 refentry| <|Placeholders|>`__ -.. |_3| replace:: `|_3 refentry| <|Placeholders|>`__ -.. |_4| replace:: `|_4 refentry| <|Placeholders|>`__ -.. |_5| replace:: `|_5 refentry| <|Placeholders|>`__ - -.. |_1 refentry| replace:: :refentry:`_1` -.. |_2 refentry| replace:: :refentry:`_2` -.. |_3 refentry| replace:: :refentry:`_3` -.. |_4 refentry| replace:: :refentry:`_4` -.. |_5 refentry| replace:: :refentry:`_5` - -.. |placeholder| replace:: `placeholder <|Placeholders|>`__ - -.. |_1,_2,..._n| replace:: |_1|, |_2|, |_3|,\ |...| - - .. |--| unicode:: U+02014 .. EM DASH @@ -122,13 +105,8 @@ __ http://www.boost.org/LICENSE_1_0.txt .. |preprocessed headers disclaimer| replace:: [*Note:* Overriding will take effect - *only* if the library is configured not to use `preprocessed headers - <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link|>`__. See - |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_ref| for more information. |--| *end note*\] - -.. |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_ref| replace:: `:refentry:`BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS` <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link|>`__ -.. |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link| replace:: `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_ - + *only* if the library is configured not to use |preprocessed headers|. See + |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS| for more information. |--| *end note*\] .. |transformation algorithm disclaimer| replace:: [*Note:* This wording applies to a no-inserter version(s) of the algorithm. See the diff --git a/doc/style.css b/doc/style.css index 8dc82f7..1609151 100644 --- a/doc/style.css +++ b/doc/style.css @@ -7,7 +7,6 @@ */ - .first { margin-top: 0; @@ -22,27 +21,43 @@ /* */ - a { - color: #0000cc; + text-decoration: none; /* no underline */ } -a:visited +a:hover { - color: #800080; + text-decoration: underline; } -/* -sup a:link, -sup a:visited, -a.interlink:link, -a.interlink:visited +@media screen { - color: #505050; - text-decoration: none; + a + { + color: #0C7445; + } + + a:visited + { + color: #663974; + } } -*/ + + +@media print +{ + a + { + color: black; + } + + a:visited + { + color: black; + } +} + a.refentry { @@ -78,7 +93,8 @@ a.header:visited a.identifier:hover, a.header:hover { - color: #0000cc; + color: #0077cc; + text-decoration: underline; } a.toc-backref:link, @@ -117,13 +133,15 @@ caption body { - background: #fffff5; + margin: 1em; + font-family: sans-serif; + font-size: 10pt; } -body.refmanual +p { - background: #fffff5 url(refmanual/manual.png) no-repeat top right fixed; - margin-right: 25pt; + text-align: left; + line-height: 1.15; } /*
*/ @@ -500,10 +518,19 @@ pre.literal-block padding-right: 1em; margin-top: 10pt; margin-left: 0pt; -/* background-color: #f7f7f7;*/ - background-color: #f5f5f5; } + +@media screen +{ + pre.literal-block + { + + background-color: #fafffb; + } +} + + td pre.literal-block { @@ -530,6 +557,15 @@ table margin-bottom: 0.5em; } +@media screen +{ + table.table th + { + background-color:#fafffb; + } +} + + table.docinfo { border: solid 0; @@ -549,12 +585,29 @@ table.citation border-left: solid thin gray; } +@media screen +{ + table.citation + { + background-color:#fafffb; + } +} + table.footnote { border: solid 0; border-left: solid thin black; } +@media screen +{ + table.footnote + { + background-color:#fafffb; + } +} + + table.header, table.footer { @@ -567,7 +620,7 @@ table.footer table.table { - border: solid 1px black; + border: solid 1px #c7c7c7; border-collapse: collapse; margin-bottom: 10pt; } @@ -581,7 +634,6 @@ td, table.table th { - border: solid 1px black; vertical-align: top; } @@ -592,6 +644,16 @@ th padding-right: 5pt; } + +@media screen +{ + table.table th + { + background-color:#fafffb; + } +} + + table.table td { @@ -650,11 +712,16 @@ tr.footer /* */ -tt.literal +@media screen { - background-color: #f5f5f5; + tt.literal + { + + background-color: #fafffb; + } } + h1 tt, h2 From 2d5e02f38285b31517a24585728cc2627af2ab53 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 1 Jun 2009 12:55:33 +0000 Subject: [PATCH 24/39] Fix #640 in sources [SVN r53534] --- doc/src/refmanual/vector.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/refmanual/vector.rst b/doc/src/refmanual/vector.rst index a1cb878..f4fb896 100644 --- a/doc/src/refmanual/vector.rst +++ b/doc/src/refmanual/vector.rst @@ -110,7 +110,7 @@ into ``v``, ``r`` is a |Forward Sequence|, ``n`` is an |Integral Constant|, and | | see |Back Extensible Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``push_front::type`` | A new ``vector`` of following elements: | -| | |begin/end|, ``x``; see |Front Extensible Sequence|. | +| | ``x``, |begin/end|; see |Front Extensible Sequence|. | +---------------------------------------+-----------------------------------------------------------+ | ``pop_front::type`` | A new ``vector`` of following elements: | | | [``next< begin::type >::type``, ``end::type``); | From bade8a503a14b56dd4b389103db608ff7afa71f7 Mon Sep 17 00:00:00 2001 From: Gennadiy Rozental Date: Sat, 6 Jun 2009 09:34:12 +0000 Subject: [PATCH 25/39] avoid C style casts [SVN r53667] --- include/boost/mpl/for_each.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/mpl/for_each.hpp b/include/boost/mpl/for_each.hpp index 21d63ed..1feadc9 100644 --- a/include/boost/mpl/for_each.hpp +++ b/include/boost/mpl/for_each.hpp @@ -76,7 +76,7 @@ struct for_each_impl typedef typename mpl::next::type iter; for_each_impl::value> - ::execute((iter*)0, (LastIterator*)0, (TransformFunc*)0, f); + ::execute( static_cast(0), static_cast(0), static_cast(0), f); } }; @@ -98,7 +98,7 @@ void for_each(F f, Sequence* = 0, TransformOp* = 0) typedef typename end::type last; aux::for_each_impl< boost::is_same::value > - ::execute((first*)0, (last*)0, (TransformOp*)0, f); + ::execute(static_cast(0), static_cast(0), static_cast(0), f); } template< From e1c57fa7774a52c78466fbbff89561da8da99e85 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 8 Jun 2009 11:16:27 +0000 Subject: [PATCH 26/39] More MPL refmanual doc generation fixes [SVN r53744] --- .../docutils/writers/html4_refdoc/__init__.py | 125 ++++++++++-------- doc/src/refmanual/Inserter.rst | 5 +- doc/src/refmanual/back_inserter.rst | 2 +- doc/src/refmanual/front_inserter.rst | 2 +- doc/src/refmanual/inserter_.rst | 10 +- 5 files changed, 80 insertions(+), 64 deletions(-) diff --git a/doc/src/docutils/writers/html4_refdoc/__init__.py b/doc/src/docutils/writers/html4_refdoc/__init__.py index ba3395a..6790c86 100755 --- a/doc/src/docutils/writers/html4_refdoc/__init__.py +++ b/doc/src/docutils/writers/html4_refdoc/__init__.py @@ -1,5 +1,5 @@ -# Copyright Aleksey Gurtovoy 2004-2008 +# Copyright Aleksey Gurtovoy 2004-2009 # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at @@ -21,35 +21,76 @@ class Writer(html4_frames.Writer): self.translator = refdoc_translator +class hacked_html_translator(nodes.NodeVisitor): + + def __init__(self, document): + self.__super = nodes.NodeVisitor + self.__super.__init__(self, document) + self.base = html4css1.HTMLTranslator(document) + self.body = self.base.body + self.head = self.base.head + self.astext = self.base.astext + self.starttag = self.base.starttag + self.words_and_spaces = self.base.words_and_spaces + self.encode = self.base.encode + self.recursion_level = 0 + + def visit_section(self, node): + if self.base.section_level == 1: + self.base.section_level = 2 + + self.base.body_prefix = self.body_prefix + self.base.visit_section(node) + + def depart_section(self, node): + self.base.depart_section(node) + if self.base.section_level == 2: + self.base.section_level = 1 + + + def visit_generated(self, node): + if node.get('class', '') == 'sectnum': + node[0].data = string.strip(node[0].data, u'\u00a0') + + self.base.visit_generated(node) + + def depart_generated(self, node): + self.base.depart_generated(node) + + class refdoc_translator(html4_frames.frame_pages_translator): - tocframe_width = 25 + tocframe_width = 25 + page_translator = hacked_html_translator + re_include = re.compile(r'(\s*#include\s+<)(.*?\.hpp)?(>\s*)?') + re_identifier = re.compile(r'(.*?\W*)(\w+)(\W.*?)?') + re_modtime = re.compile(r'\s*modtime:\s*(.*)') + re_auto_id = re.compile(r'^id(\d+)$') + in_literal_block = 0 + in_reference = 0 def __init__(self, document, index_page, page_files_dir, extension): self.docframe += ' refmanual' self.__super = html4_frames.frame_pages_translator self.__super.__init__(self, document, index_page, page_files_dir, extension) - self.page_translator = hacked_html_translator - self.re_include = re.compile(r'(\s*#include\s+<)(.*?\.hpp)?(>\s*)?') - self.re_identifier = re.compile(r'(.*?\W*)(\w+)(\W.*?)?') - self.re_modtime = re.compile(r'\s*modtime:\s*(.*)') - self.in_literal_block = 0 - self.in_reference = 0 - def visit_title(self, node): - old_len = len(self.active_visitor().body) - self.__super.visit_title(self, node) - - self = self.active_visitor() - if len(self.body) - old_len > 1 and not node.has_key('refid'): - name = nodes.make_id(node.astext()) - self.body[-1] = self.starttag( + def visit_title( self, node ): + self.__super.visit_title( self, node ) + if self.re_auto_id.match( self._node_id( node.parent ) ): + name = nodes.make_id( node.astext() ) + self = self.active_visitor() + self.body.append( self.starttag( {}, 'a', '', name=name, href='#%s' % name, CLASS='subsection-title' - ) + ) ) - def depart_title(self, node): - self.__super.depart_title(self, node) + def depart_title( self, node ): + base = self + if self.re_auto_id.match( self._node_id( node.parent ) ): + self = self.active_visitor() + self.body.append( '') + + base.__super.depart_title( base, node ) def visit_table(self, node): @@ -165,6 +206,7 @@ class refdoc_translator(html4_frames.frame_pages_translator): def _handle_id_sub(base, self, match): identifier = match.group(2) + if not base.document.has_name( identifier.lower() ): return self.encode(match.group(0)) @@ -182,9 +224,12 @@ class refdoc_translator(html4_frames.frame_pages_translator): if not id: return self.encode(match.group(0)) + if id == 'inserter': + id = 'inserter-class' + result = self.encode(match.group(1)) result += '%s' \ - % ( base._chunk_ref( base._active_chunk_id(), id ) + % ( base._chunk_ref( base._active_chunk_id(), base._make_chunk_id( id ) ) , self.encode(identifier) ) @@ -194,41 +239,15 @@ class refdoc_translator(html4_frames.frame_pages_translator): return result -class hacked_html_translator(nodes.NodeVisitor): - - def __init__(self, document): - self.__super = nodes.NodeVisitor - self.__super.__init__(self, document) - self.base = html4css1.HTMLTranslator(document) - self.body = self.base.body - self.head = self.base.head - self.astext = self.base.astext - self.starttag = self.base.starttag - self.words_and_spaces = self.base.words_and_spaces - self.encode = self.base.encode - self.recursion_level = 0 + def _make_chunk_id( self, node_id ): + if self.re_auto_id.match( node_id ): + node = self.document.ids[ node_id ] + return '%s-%s' % ( self._node_id( node.parent ), node['dupnames'][0] ) - def visit_section(self, node): - if self.base.section_level == 1: - self.base.section_level = 2 - - self.base.body_prefix = self.body_prefix - self.base.visit_section(node) - - def depart_section(self, node): - self.base.depart_section(node) - if self.base.section_level == 2: - self.base.section_level = 1 - + if node_id.startswith( 'boost-mpl-' ): + return node_id[ len( 'boost-mpl-' ): ] - def visit_generated(self, node): - if node.get('class', '') == 'sectnum': - node[0].data = string.strip(node[0].data, u'\u00a0') - - self.base.visit_generated(node) - - def depart_generated(self, node): - self.base.depart_generated(node) + return node_id def _setup_forwarding(visitor): diff --git a/doc/src/refmanual/Inserter.rst b/doc/src/refmanual/Inserter.rst index 9712f04..e0468f8 100644 --- a/doc/src/refmanual/Inserter.rst +++ b/doc/src/refmanual/Inserter.rst @@ -69,12 +69,11 @@ Example Models ------ -* |inserter| +* |[inserter]| * |front_inserter| * |back_inserter| See also -------- -|Algorithms|, |Transformation Algorithms|, |inserter|, |front_inserter|, |back_inserter| - +|Algorithms|, |Transformation Algorithms|, |[inserter]|, |front_inserter|, |back_inserter| diff --git a/doc/src/refmanual/back_inserter.rst b/doc/src/refmanual/back_inserter.rst index 79bba5a..e308c84 100644 --- a/doc/src/refmanual/back_inserter.rst +++ b/doc/src/refmanual/back_inserter.rst @@ -91,4 +91,4 @@ Example See also -------- -|Algorithms|, |Inserter|, |Reversible Algorithm|, |inserter|, |front_inserter|, |push_back| +|Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |front_inserter|, |push_back| diff --git a/doc/src/refmanual/front_inserter.rst b/doc/src/refmanual/front_inserter.rst index 3bd4e14..518eb10 100644 --- a/doc/src/refmanual/front_inserter.rst +++ b/doc/src/refmanual/front_inserter.rst @@ -91,4 +91,4 @@ Example See also -------- -|Algorithms|, |Inserter|, |Reversible Algorithm|, |inserter|, |back_inserter|, |push_front| +|Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |back_inserter|, |push_front| diff --git a/doc/src/refmanual/inserter_.rst b/doc/src/refmanual/inserter_.rst index ecdfee5..8dcc638 100644 --- a/doc/src/refmanual/inserter_.rst +++ b/doc/src/refmanual/inserter_.rst @@ -5,11 +5,11 @@ .. Software License, Version 1.0. (See accompanying .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -|inserter(title)| -================= - .. _`inserter_`: +inserter (class) +================ + Synopsis -------- @@ -99,6 +99,4 @@ See also |Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter| - -.. |inserter(title)| replace:: inserter -.. |inserter| replace:: ':refentry:`inserter` <|inserter_|>'__ +.. |[inserter]| replace:: `inserter (class)`_ From 78364897a1f2b37a5ab87f3511dd17f2c9e37110 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 8 Jun 2009 13:12:50 +0000 Subject: [PATCH 27/39] Further MPL doc generation fixes [SVN r53747] --- .../docutils/writers/html4_refdoc/__init__.py | 71 ++++--------------- 1 file changed, 14 insertions(+), 57 deletions(-) diff --git a/doc/src/docutils/writers/html4_refdoc/__init__.py b/doc/src/docutils/writers/html4_refdoc/__init__.py index 6790c86..2ff3964 100755 --- a/doc/src/docutils/writers/html4_refdoc/__init__.py +++ b/doc/src/docutils/writers/html4_refdoc/__init__.py @@ -21,47 +21,9 @@ class Writer(html4_frames.Writer): self.translator = refdoc_translator -class hacked_html_translator(nodes.NodeVisitor): - - def __init__(self, document): - self.__super = nodes.NodeVisitor - self.__super.__init__(self, document) - self.base = html4css1.HTMLTranslator(document) - self.body = self.base.body - self.head = self.base.head - self.astext = self.base.astext - self.starttag = self.base.starttag - self.words_and_spaces = self.base.words_and_spaces - self.encode = self.base.encode - self.recursion_level = 0 - - def visit_section(self, node): - if self.base.section_level == 1: - self.base.section_level = 2 - - self.base.body_prefix = self.body_prefix - self.base.visit_section(node) - - def depart_section(self, node): - self.base.depart_section(node) - if self.base.section_level == 2: - self.base.section_level = 1 - - - def visit_generated(self, node): - if node.get('class', '') == 'sectnum': - node[0].data = string.strip(node[0].data, u'\u00a0') - - self.base.visit_generated(node) - - def depart_generated(self, node): - self.base.depart_generated(node) - - class refdoc_translator(html4_frames.frame_pages_translator): tocframe_width = 25 - page_translator = hacked_html_translator re_include = re.compile(r'(\s*#include\s+<)(.*?\.hpp)?(>\s*)?') re_identifier = re.compile(r'(.*?\W*)(\w+)(\W.*?)?') re_modtime = re.compile(r'\s*modtime:\s*(.*)') @@ -75,6 +37,20 @@ class refdoc_translator(html4_frames.frame_pages_translator): self.__super.__init__(self, document, index_page, page_files_dir, extension) + def visit_section( self, node ): + base = self + self = self.active_visitor() + if self.section_level == 1: + self.section_level = 2 + base.__super.visit_section( base, node ) + + def depart_section( self, node ): + self.__super.depart_section( self, node ) + self = self.active_visitor() + if self.section_level == 2: + self.section_level = 1 + + def visit_title( self, node ): self.__super.visit_title( self, node ) if self.re_auto_id.match( self._node_id( node.parent ) ): @@ -249,22 +225,3 @@ class refdoc_translator(html4_frames.frame_pages_translator): return node_id - -def _setup_forwarding(visitor): - for name in nodes.node_class_names: - if not getattr(visitor, 'visit_' + name, None): - - def forward_visit(self, node, name=name): - self.recursion_level += 1 - #print '%svisit_%s' % ( '+' * self.recursion_level, name ) - getattr(self.base, 'visit_' + name)(node) - - def forward_depart(self, node, name=name): - #print '%sdepart_%s' % ( '-' * self.recursion_level, name ) - self.recursion_level -= 1 - getattr(self.base, 'depart_' + name)(node) - - setattr(visitor, 'visit_' + name, forward_visit) - setattr(visitor, 'depart_' + name, forward_depart) - -_setup_forwarding(hacked_html_translator) From 1ba6d35b4d52e2b573a7cf890e8fdef3e1ce2bee Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Tue, 14 Jul 2009 16:49:45 +0000 Subject: [PATCH 28/39] Fix default implementation of has_push_back and has_push_front [SVN r54948] --- include/boost/mpl/aux_/push_back_impl.hpp | 11 +++-- include/boost/mpl/aux_/push_front_impl.hpp | 11 +++-- test/Jamfile.v2 | 1 + test/push_back.cpp | 52 ++++++++++++++++++++++ test/push_front.cpp | 10 +++++ 5 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 test/push_back.cpp diff --git a/include/boost/mpl/aux_/push_back_impl.hpp b/include/boost/mpl/aux_/push_back_impl.hpp index 3d8d5fe..3ece711 100644 --- a/include/boost/mpl/aux_/push_back_impl.hpp +++ b/include/boost/mpl/aux_/push_back_impl.hpp @@ -25,8 +25,7 @@ namespace boost { namespace mpl { -template< typename Tag > -struct has_push_back_impl; +struct has_push_back_arg; // agurt 05/feb/04: no default implementation; the stub definition is needed // to enable the default 'has_push_back' implementation below @@ -39,7 +38,7 @@ struct push_back_impl // if you've got an assert here, you are requesting a 'push_back' // specialization that doesn't exist. BOOST_MPL_ASSERT_MSG( - ( boost::is_same< T, has_push_back_impl >::value ) + ( boost::is_same< T, has_push_back_arg >::value ) , REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST , ( Sequence ) ); @@ -51,13 +50,13 @@ struct has_push_back_impl { template< typename Seq > struct apply #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::has_type< push_back< Seq, has_push_back_impl > > + : aux::has_type< push_back< Seq, has_push_back_arg > > { #else { - typedef aux::has_type< push_back< Seq, has_push_back_impl > > type; + typedef aux::has_type< push_back< Seq, has_push_back_arg > > type; BOOST_STATIC_CONSTANT(bool, value = - (aux::has_type< push_back< Seq, has_push_back_impl > >::value) + (aux::has_type< push_back< Seq, has_push_back_arg > >::value) ); #endif }; diff --git a/include/boost/mpl/aux_/push_front_impl.hpp b/include/boost/mpl/aux_/push_front_impl.hpp index 2473a8b..4010532 100644 --- a/include/boost/mpl/aux_/push_front_impl.hpp +++ b/include/boost/mpl/aux_/push_front_impl.hpp @@ -25,8 +25,7 @@ namespace boost { namespace mpl { -template< typename Tag > -struct has_push_front_impl; +struct has_push_front_arg; // agurt 05/feb/04: no default implementation; the stub definition is needed // to enable the default 'has_push_front' implementation below @@ -40,7 +39,7 @@ struct push_front_impl // if you've got an assert here, you are requesting a 'push_front' // specialization that doesn't exist. BOOST_MPL_ASSERT_MSG( - ( boost::is_same< T, has_push_front_impl >::value ) + ( boost::is_same< T, has_push_front_arg >::value ) , REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST , ( Sequence ) ); @@ -52,13 +51,13 @@ struct has_push_front_impl { template< typename Seq > struct apply #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::has_type< push_front< Seq, has_push_front_impl > > + : aux::has_type< push_front< Seq, has_push_front_arg > > { #else { - typedef aux::has_type< push_front< Seq, has_push_front_impl > > type; + typedef aux::has_type< push_front< Seq, has_push_front_arg > > type; BOOST_STATIC_CONSTANT(bool, value = - (aux::has_type< push_front< Seq, has_push_front_impl > >::value) + (aux::has_type< push_front< Seq, has_push_front_arg > >::value) ); #endif }; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d8a14d3..0031a52 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -66,6 +66,7 @@ compile numeric_ops.cpp ; compile pair_view.cpp ; compile partition.cpp ; compile pop_front.cpp ; +compile push_back.cpp ; compile push_front.cpp ; compile quote.cpp ; compile range_c.cpp ; diff --git a/test/push_back.cpp b/test/push_back.cpp new file mode 100644 index 0000000..bdf7a92 --- /dev/null +++ b/test/push_back.cpp @@ -0,0 +1,52 @@ + +// Copyright Steven Watanabe 2009 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id$ +// $Date: 2008-10-10 02:21:07 -0700 (Fri, 10 Oct 2008) $ +// $Revision: 49240 $ + +#include + +#include + +struct no_push_back_tag {}; + +struct no_push_back +{ + typedef no_push_back_tag tag; +}; + +struct has_push_back_tag {}; + +struct with_push_back +{ + typedef has_push_back_tag tag; +}; + +namespace boost { namespace mpl { + +template<> +struct push_back_impl< has_push_back_tag > +{ + template struct apply + { + typedef no_push_back type; + }; +}; + +}} + +MPL_TEST_CASE() +{ + MPL_ASSERT_NOT(( has_push_back< no_push_back > )); + MPL_ASSERT(( has_push_back< with_push_back > )); + + typedef push_back< with_push_back , int >::type test; + MPL_ASSERT(( is_same< test, no_push_back > )); +} diff --git a/test/push_front.cpp b/test/push_front.cpp index 980a6e5..f5edc2f 100644 --- a/test/push_front.cpp +++ b/test/push_front.cpp @@ -1,5 +1,6 @@ // Copyright Aleksey Gurtovoy 2000-2004 +// Copyright Steven Watanabe 2009 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -19,6 +20,13 @@ #include +struct no_push_front_tag {}; + +struct no_push_front +{ + typedef no_push_front_tag tag; +}; + MPL_TEST_CASE() { typedef push_front,long>::type res1; @@ -37,4 +45,6 @@ MPL_TEST_CASE() MPL_ASSERT(( has_push_front< list1 > )); MPL_ASSERT_NOT(( has_push_back< list0<> > )); + + MPL_ASSERT_NOT(( has_push_front< no_push_front > )); } From e6024bc6f7f0d62e9216b8196bdec0f4919d9341 Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Tue, 14 Jul 2009 16:52:05 +0000 Subject: [PATCH 29/39] Call clear before checking for the existence of push_back [SVN r54949] --- include/boost/mpl/aux_/inserter_algorithm.hpp | 2 +- test/copy.cpp | 164 ++++++++++++++++++ 2 files changed, 165 insertions(+), 1 deletion(-) diff --git a/include/boost/mpl/aux_/inserter_algorithm.hpp b/include/boost/mpl/aux_/inserter_algorithm.hpp index fe1a095..20ae816 100644 --- a/include/boost/mpl/aux_/inserter_algorithm.hpp +++ b/include/boost/mpl/aux_/inserter_algorithm.hpp @@ -49,7 +49,7 @@ template< \ BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ > \ struct name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \ - : if_< has_push_back \ + : if_< has_push_back< typename clear::type> \ , aux::name##_impl< \ BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ , back_inserter< typename clear::type > \ diff --git a/test/copy.cpp b/test/copy.cpp index 4ffc03f..a776f55 100644 --- a/test/copy.cpp +++ b/test/copy.cpp @@ -20,6 +20,20 @@ #include #include #include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include MPL_TEST_CASE() @@ -45,3 +59,153 @@ MPL_TEST_CASE() MPL_ASSERT_RELATION( size::value, ==, 20 ); MPL_ASSERT(( equal< result,range_c > )); } + +struct push_back_only_tag {}; + +template< typename Seq > +struct push_back_only +{ + typedef push_back_only_tag tag; + typedef Seq seq; +}; + +namespace boost { namespace mpl { + +template<> +struct begin_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : begin< typename Seq::seq > + { + }; +}; + +template<> +struct end_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : end< typename Seq::seq > + { + }; +}; + +template<> +struct size_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : size< typename Seq::seq > + { + }; +}; + +template<> +struct empty_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : empty< typename Seq::seq > + { + }; +}; + +template<> +struct front_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : front< typename Seq::seq > + { + }; +}; + +template<> +struct insert_impl< ::push_back_only_tag > +{ + template< typename Seq, typename Pos, typename X > struct apply + { + typedef ::push_back_only< + typename insert< typename Seq::seq, Pos, X >::type + > type; + }; +}; + +template<> +struct insert_range_impl< ::push_back_only_tag > +{ + template< typename Seq, typename Pos, typename X > struct apply + { + typedef ::push_back_only< + typename insert_range< typename Seq::seq, Pos, X >::type + > type; + }; +}; + +template<> +struct erase_impl< ::push_back_only_tag > +{ + template< typename Seq, typename Iter1, typename Iter2 > struct apply + { + typedef ::push_back_only< + typename erase< typename Seq::seq, Iter1, Iter2 >::type + > type; + }; +}; + +template<> +struct clear_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + { + typedef ::push_back_only< + typename clear< typename Seq::seq >::type + > type; + }; +}; + +template<> +struct push_back_impl< ::push_back_only_tag > +{ + template< typename Seq, typename X > struct apply + { + typedef ::push_back_only< + typename push_back< typename Seq::seq, X >::type + > type; + }; +}; + +template<> +struct pop_back_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + { + typedef ::push_back_only< + typename pop_back< typename Seq::seq >::type + > type; + }; +}; + +template<> +struct back_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : back< typename Seq::seq > + { + }; +}; + +template<> +struct has_push_back_impl< ::push_back_only_tag > +{ + template< typename Seq > struct apply + : less< size,int_<10> > + { + }; +}; + +}} + +MPL_TEST_CASE() +{ + typedef vector10_c numbers; + typedef copy< push_back_only< numbers > >::type result; + + MPL_ASSERT((equal< numbers, result >)); +} From e1fa211c835812dde98cab5c360ff6133b8342c5 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Fri, 24 Jul 2009 17:22:50 +0000 Subject: [PATCH 30/39] fix bug with signed char [SVN r55146] --- include/boost/mpl/string.hpp | 58 +++++++++++++++++++----------------- test/string.cpp | 41 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 27 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index ce7c782..22c71cb 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -44,6 +44,10 @@ #include #include #include +#include + +#include // for bidirectional_iterator_tag +#include namespace boost { namespace mpl { @@ -54,51 +58,51 @@ namespace boost { namespace mpl // multi-character literals should be localized to these macros. #define BOOST_MPL_MULTICHAR_LENGTH(c) \ - (std::size_t)((c>0xffffff)+(c>0xffff)+(c>0xff)+1) + (std::size_t)((c0xffffff)+(c>0xffff)+(c>0xff)+1)) #if defined(BOOST_LITTLE_ENDIAN) && defined(__SUNPRO_CC) #define BOOST_MPL_MULTICHAR_AT(c,i) \ - (char)(0xff&(c>>(8*(std::size_t)(i)))) + (char)(0xff&((unsigned)(c)>>(8*(std::size_t)(i)))) #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ - ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) + ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(unsigned)(c)) #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ - (((c)<<8)|(unsigned char)(i)) + (((unsigned)(c)<<8)|(unsigned char)(i)) #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ - (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(unsigned)(c)) #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ - ((c)>>8) + ((unsigned)(c)>>8) #else #define BOOST_MPL_MULTICHAR_AT(c,i) \ - (char)(0xff&(c>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) + (char)(0xff&((unsigned)(c)>>(8*(BOOST_MPL_MULTICHAR_LENGTH(c)-(std::size_t)(i)-1)))) #define BOOST_MPL_MULTICHAR_PUSH_BACK(c,i) \ - (((c)<<8)|(unsigned char)(i)) + (((unsigned)(c)<<8)|(unsigned char)(i)) #define BOOST_MPL_MULTICHAR_PUSH_FRONT(c,i) \ - ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(c)) + ((((unsigned char)(i))<<(BOOST_MPL_MULTICHAR_LENGTH(c)*8))|(unsigned)(c)) #define BOOST_MPL_MULTICHAR_POP_BACK(c) \ - ((c)>>8) + ((unsigned)(c)>>8) #define BOOST_MPL_MULTICHAR_POP_FRONT(c) \ - (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(c)) + (((1<<((BOOST_MPL_MULTICHAR_LENGTH(c)-1)*8))-1)&(unsigned)(c)) #endif struct string_tag; struct string_iterator_tag; - template + template struct string; - template + template struct string_iterator; template @@ -117,7 +121,7 @@ namespace boost { namespace mpl + BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C,n)) #define M1(z, n, data) \ - template \ + template \ struct apply > \ : mpl::size_t<(0 BOOST_PP_REPEAT_ ## z(n, M0, ~))> \ {}; @@ -155,7 +159,7 @@ namespace boost { namespace mpl struct apply; #define M0(z,n,data) \ - template \ + template \ struct apply > \ { \ typedef mpl::string_iterator, n, 0> type; \ @@ -205,17 +209,17 @@ namespace boost { namespace mpl }; #define M0(z,n,data) \ - template \ + template \ struct apply, Value, false> \ { \ typedef \ mpl::string< \ BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), C) \ BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + ((unsigned)BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ ?BOOST_PP_CAT(C,BOOST_PP_DEC(n)) \ :BOOST_MPL_MULTICHAR_PUSH_BACK(BOOST_PP_CAT(C,BOOST_PP_DEC(n)), Value::value) \ - , (BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ + , ((unsigned)BOOST_PP_CAT(C,BOOST_PP_DEC(n))>0xffffff) \ ?(char)Value::value \ :0 \ > \ @@ -225,7 +229,7 @@ namespace boost { namespace mpl BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 - template + template struct apply, Value, false> { typedef @@ -247,7 +251,7 @@ namespace boost { namespace mpl struct apply; #define M0(z,n,data) \ - template \ + template \ struct apply > \ { \ BOOST_MPL_ASSERT_MSG((C0 != 0), POP_BACK_FAILED_MPL_STRING_IS_EMPTY, (mpl::string<>)); \ @@ -300,7 +304,7 @@ namespace boost { namespace mpl #endif #define M0(z,n,data) \ - template \ + template \ struct apply, Value, true> \ { \ typedef \ @@ -314,7 +318,7 @@ namespace boost { namespace mpl BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 - template + template struct apply, Value, false> { typedef @@ -348,7 +352,7 @@ namespace boost { namespace mpl struct apply; #define M0(z,n,data) \ - template \ + template \ struct apply, true> \ { \ BOOST_MPL_ASSERT_MSG((C0 != 0), POP_FRONT_FAILED_MPL_STRING_IS_EMPTY, (mpl::string<>)); \ @@ -360,7 +364,7 @@ namespace boost { namespace mpl BOOST_PP_REPEAT_FROM_TO(1, BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 - template + template struct apply, false> { typedef @@ -449,7 +453,7 @@ namespace boost { namespace mpl }; #define M0(z, n, data) \ - template \ + template \ struct string_iterator, n, J> \ { \ enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) }; \ @@ -463,7 +467,7 @@ namespace boost { namespace mpl prior; \ typedef mpl::char_ type; \ }; \ - template \ + template \ struct string_iterator, n, 0> \ { \ enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) }; \ @@ -485,7 +489,7 @@ namespace boost { namespace mpl BOOST_PP_REPEAT(BOOST_MPL_STRING_MAX_PARAMS, M0, ~) #undef M0 - template + template struct string { /// INTERNAL ONLY diff --git a/test/string.cpp b/test/string.cpp index f50073b..57b5979 100644 --- a/test/string.cpp +++ b/test/string.cpp @@ -17,6 +17,7 @@ #include +#include #include #include #include @@ -471,5 +472,45 @@ int main() )); } + { + BOOST_TEST(( + mpl::at_c< + mpl::string<'\x7f'> + , 0 + >::type::value == (char)0x7f + )); + + BOOST_TEST(( + mpl::at_c< + mpl::string<'\x80'> + , 0 + >::type::value == (char)0x80 + )); + + BOOST_TEST(( + mpl::at_c< + mpl::string< + mpl::at_c< + mpl::string<'\x7f'> + , 0 + >::type::value + > + , 0 + >::type::value == (char)0x7f + )); + + BOOST_TEST(( + mpl::at_c< + mpl::string< + mpl::at_c< + mpl::string<'\x80'> + , 0 + >::type::value + > + , 0 + >::type::value == (char)0x80 + )); + } + return boost::report_errors(); } From 991277330b32b28fa009947de5d9a171417330c8 Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Sun, 26 Jul 2009 00:49:56 +0000 Subject: [PATCH 31/39] Copyrights on CMakeLists.txt to keep them from clogging up the inspect reports. This is essentially the same commit as r55095 on the release branch. [SVN r55159] --- CMakeLists.txt | 6 ++++++ test/CMakeLists.txt | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index aca1163..ea43e88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,9 @@ +# +# Copyright Troy D. Straszheim +# +# Distributed under the Boost Software License, Version 1.0. +# See http://www.boost.org/LICENSE_1_0.txt +# #---------------------------------------------------------------------------- # This file was automatically generated from the original CMakeLists.txt file # Add a variable to hold the headers for the library diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 88b7f0a..e8b182b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,3 +1,9 @@ +# +# Copyright Troy D. Straszheim +# +# Distributed under the Boost Software License, Version 1.0. +# See http://www.boost.org/LICENSE_1_0.txt +# boost_additional_test_dependencies(mpl BOOST_DEPENDS test bind) boost_test_compile(largest_int aux_/largest_int.cpp) From 5a2abc4d58bb1c6f6dc10ca3baa623476c502c3c Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Mon, 3 Aug 2009 00:24:46 +0000 Subject: [PATCH 32/39] more generic c_str implementation from Mathis Gaunard [SVN r55377] --- include/boost/mpl/string.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/mpl/string.hpp b/include/boost/mpl/string.hpp index 22c71cb..6a9481a 100644 --- a/include/boost/mpl/string.hpp +++ b/include/boost/mpl/string.hpp @@ -44,7 +44,6 @@ #include #include #include -#include #include // for bidirectional_iterator_tag #include @@ -499,6 +498,7 @@ namespace boost { namespace mpl , back_ = BOOST_PP_CAT(C, BOOST_PP_DEC(BOOST_MPL_STRING_MAX_PARAMS)) }; + typedef char value_type; typedef string type; typedef string_tag tag; }; @@ -541,11 +541,11 @@ namespace boost { namespace mpl #undef M0 typedef c_str type; - static char const value[]; + static typename Sequence::value_type const value[BOOST_MPL_LIMIT_STRING_SIZE+1]; }; template - char const c_str::value[] = + typename Sequence::value_type const c_str::value[BOOST_MPL_LIMIT_STRING_SIZE+1] = { #define M0(z, n, data) \ mpl::aux_::deref_unless::type::value, From 0efce8938c0733654c62788f6d413a38d9f83603 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 17 Aug 2009 10:27:13 +0000 Subject: [PATCH 33/39] MPL refmanul: fix copyrights, move all build files in the _build dir [SVN r55621] --- doc/src/README.txt | 2 +- doc/src/build.py | 25 ++++++---- .../parsers/rst/directives/htmlrefdoc.py | 21 +++++++++ doc/src/docutils/setup.py | 7 +-- doc/src/docutils/tools/rst2htmlrefdoc.py | 7 ++- .../docutils/writers/html4_refdoc/__init__.py | 26 ++++++++++- doc/src/refmanual/ASSERT.rst | 9 ++-- doc/src/refmanual/ASSERT_MSG.rst | 9 ++-- doc/src/refmanual/ASSERT_NOT.rst | 9 ++-- doc/src/refmanual/ASSERT_RELATION.rst | 9 ++-- doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst | 10 ++-- doc/src/refmanual/Acknowledgements.rst | 11 ++--- doc/src/refmanual/Algorithms-Concepts.rst | 4 ++ doc/src/refmanual/Algorithms-Inserters.rst | 4 ++ doc/src/refmanual/Algorithms-Iteration.rst | 10 ++-- doc/src/refmanual/Algorithms-Querying.rst | 9 ++-- doc/src/refmanual/Algorithms-Runtime.rst | 9 ++-- .../refmanual/Algorithms-Transformation.rst | 10 ++-- doc/src/refmanual/Algorithms.rst | 10 ++-- doc/src/refmanual/AssociativeSequence.rst | 10 ++-- doc/src/refmanual/BackExtensibleSequence.rst | 9 ++-- doc/src/refmanual/BidirectionalIterator.rst | 9 ++-- doc/src/refmanual/BidirectionalSequence.rst | 9 ++-- doc/src/refmanual/CFG_NO_HAS_XXX.rst | 9 ++-- doc/src/refmanual/CFG_NO_PREPROCESSED.rst | 10 ++-- doc/src/refmanual/Categorized-Components.rst | 6 +++ doc/src/refmanual/Categorized-Concepts.rst | 6 +++ doc/src/refmanual/Categorized.rst | 16 ++----- doc/src/refmanual/Data-Concepts.rst | 4 ++ doc/src/refmanual/Data-Miscellaneous.rst | 4 ++ doc/src/refmanual/Data-Numeric.rst | 4 ++ doc/src/refmanual/Data.rst | 10 ++-- .../refmanual/ExtensibleAssociativeSeq.rst | 9 ++-- doc/src/refmanual/ExtensibleSequence.rst | 9 ++-- doc/src/refmanual/ForwardIterator.rst | 9 ++-- doc/src/refmanual/ForwardSequence.rst | 9 ++-- doc/src/refmanual/FrontExtensibleSequence.rst | 9 ++-- doc/src/refmanual/HAS_XXX_TRAIT_DEF.rst | 9 ++-- doc/src/refmanual/HAS_XXX_TRAIT_NAMED_DEF.rst | 9 ++-- doc/src/refmanual/Inserter.rst | 10 ++-- doc/src/refmanual/IntegralConstant.rst | 9 ++-- doc/src/refmanual/IntegralSequenceWrapper.rst | 9 ++-- doc/src/refmanual/Iterators-Concepts.rst | 11 ++--- doc/src/refmanual/Iterators-Iterator.rst | 9 ++++ doc/src/refmanual/Iterators-Metafunctions.rst | 12 ----- doc/src/refmanual/Iterators.rst | 10 ++-- doc/src/refmanual/LIMIT_LIST_SIZE.rst | 9 ++-- doc/src/refmanual/LIMIT_MAP_SIZE.rst | 9 ++-- .../refmanual/LIMIT_METAFUNCTION_ARITY.rst | 9 ++-- doc/src/refmanual/LIMIT_SET_SIZE.rst | 10 ++-- doc/src/refmanual/LIMIT_STRING_SIZE.rst | 9 ++-- doc/src/refmanual/LIMIT_UNROLLING.rst | 10 ++-- doc/src/refmanual/LIMIT_VECTOR_SIZE.rst | 9 ++-- doc/src/refmanual/LambdaExpression.rst | 10 ++-- doc/src/refmanual/Macros-Asserts.rst | 10 ++-- doc/src/refmanual/Macros-Broken.rst | 4 ++ doc/src/refmanual/Macros-Configuration.rst | 9 ++-- doc/src/refmanual/Macros-Introspection.rst | 4 ++ doc/src/refmanual/Macros.rst | 9 ++-- doc/src/refmanual/Metafunction.rst | 9 ++-- doc/src/refmanual/MetafunctionClass.rst | 10 ++-- .../refmanual/Metafunctions-Arithmetic.rst | 10 ++-- doc/src/refmanual/Metafunctions-Bitwise.rst | 10 ++-- .../refmanual/Metafunctions-Comparisons.rst | 10 ++-- .../refmanual/Metafunctions-Composition.rst | 10 ++-- doc/src/refmanual/Metafunctions-Concepts.rst | 4 ++ .../refmanual/Metafunctions-Conditional.rst | 9 ++-- .../refmanual/Metafunctions-Invocation.rst | 9 ++-- doc/src/refmanual/Metafunctions-Logical.rst | 10 ++-- .../refmanual/Metafunctions-Miscellaneous.rst | 4 ++ doc/src/refmanual/Metafunctions-String.rst | 4 ++ .../Metafunctions-Trivial-Summary.rst | 41 +++++++++++++++++ doc/src/refmanual/Metafunctions-Trivial.rst | 46 ++----------------- doc/src/refmanual/Metafunctions-Type.rst | 9 ++-- doc/src/refmanual/Metafunctions.rst | 10 ++-- doc/src/refmanual/NumericMetafunction.rst | 9 ++-- doc/src/refmanual/PlaceholderExpression.rst | 10 ++-- doc/src/refmanual/Placeholders.rst | 10 ++-- doc/src/refmanual/RandomAccessIterator.rst | 9 ++-- doc/src/refmanual/RandomAccessSequence.rst | 9 ++-- doc/src/refmanual/ReversibleAlgorithm.rst | 9 ++-- doc/src/refmanual/Sequences-Classes.rst | 10 ++-- doc/src/refmanual/Sequences-Concepts.rst | 10 ++-- doc/src/refmanual/Sequences-Intrinsic.rst | 9 ++-- doc/src/refmanual/Sequences-Views.rst | 10 ++-- doc/src/refmanual/Sequences.rst | 10 ++-- .../refmanual/TagDispatchedMetafunction.rst | 10 ++-- doc/src/refmanual/Terminology.rst | 10 ++-- doc/src/refmanual/TrivialMetafunction.rst | 9 ++-- doc/src/refmanual/VariadicSequence.rst | 10 ++-- doc/src/refmanual/accumulate.rst | 10 ++-- doc/src/refmanual/advance.rst | 10 ++-- doc/src/refmanual/always.rst | 10 ++-- doc/src/refmanual/and_.rst | 9 ++-- doc/src/refmanual/apply.rst | 10 ++-- doc/src/refmanual/apply_wrap.rst | 10 ++-- doc/src/refmanual/arg.rst | 10 ++-- doc/src/refmanual/at.rst | 10 ++-- doc/src/refmanual/at_c.rst | 10 ++-- doc/src/refmanual/back.rst | 9 ++-- doc/src/refmanual/back_inserter.rst | 10 ++-- doc/src/refmanual/begin.rst | 10 ++-- doc/src/refmanual/bind.rst | 10 ++-- doc/src/refmanual/bitand_.rst | 10 ++-- doc/src/refmanual/bitor_.rst | 10 ++-- doc/src/refmanual/bitxor_.rst | 10 ++-- doc/src/refmanual/bool_.rst | 10 ++-- doc/src/refmanual/c_str.rst | 9 ++-- doc/src/refmanual/char_.rst | 9 ++-- doc/src/refmanual/clear.rst | 9 ++-- doc/src/refmanual/contains.rst | 10 ++-- doc/src/refmanual/copy.rst | 10 ++-- doc/src/refmanual/copy_if.rst | 10 ++-- doc/src/refmanual/count.rst | 10 ++-- doc/src/refmanual/count_if.rst | 10 ++-- doc/src/refmanual/deque.rst | 10 ++-- doc/src/refmanual/deref.rst | 10 ++-- doc/src/refmanual/distance.rst | 10 ++-- doc/src/refmanual/divides.rst | 10 ++-- doc/src/refmanual/empty.rst | 10 ++-- doc/src/refmanual/empty_base.rst | 10 ++-- doc/src/refmanual/empty_sequence.rst | 10 ++-- doc/src/refmanual/end.rst | 10 ++-- doc/src/refmanual/equal.rst | 10 ++-- doc/src/refmanual/equal_to.rst | 9 ++-- doc/src/refmanual/erase.rst | 10 ++-- doc/src/refmanual/erase_key.rst | 10 ++-- doc/src/refmanual/eval_if.rst | 10 ++-- doc/src/refmanual/eval_if_c.rst | 10 ++-- doc/src/refmanual/filter_view.rst | 10 ++-- doc/src/refmanual/find.rst | 10 ++-- doc/src/refmanual/find_if.rst | 10 ++-- doc/src/refmanual/fold.rst | 10 ++-- doc/src/refmanual/for_each.rst | 10 ++-- doc/src/refmanual/front.rst | 10 ++-- doc/src/refmanual/front_inserter.rst | 10 ++-- doc/src/refmanual/greater.rst | 9 ++-- doc/src/refmanual/greater_equal.rst | 9 ++-- doc/src/refmanual/has_key.rst | 10 ++-- doc/src/refmanual/identity.rst | 10 ++-- doc/src/refmanual/if_.rst | 10 ++-- doc/src/refmanual/if_c.rst | 10 ++-- doc/src/refmanual/inherit.rst | 10 ++-- doc/src/refmanual/inherit_linearly.rst | 10 ++-- doc/src/refmanual/insert.rst | 10 ++-- doc/src/refmanual/insert_range.rst | 9 ++-- doc/src/refmanual/inserter_.rst | 10 ++-- doc/src/refmanual/int_.rst | 9 ++-- doc/src/refmanual/integral_c.rst | 9 ++-- doc/src/refmanual/is_sequence.rst | 10 ++-- doc/src/refmanual/iter_fold.rst | 12 ++--- doc/src/refmanual/iter_fold_if.rst | 14 ++++-- doc/src/refmanual/iterator_category.rst | 10 ++-- doc/src/refmanual/iterator_range.rst | 10 ++-- doc/src/refmanual/joint_view.rst | 10 ++-- doc/src/refmanual/key_type.rst | 10 ++-- doc/src/refmanual/lambda.rst | 10 ++-- doc/src/refmanual/less.rst | 9 ++-- doc/src/refmanual/less_equal.rst | 9 ++-- doc/src/refmanual/list.rst | 10 ++-- doc/src/refmanual/list_c.rst | 10 ++-- doc/src/refmanual/long_.rst | 9 ++-- doc/src/refmanual/lower_bound.rst | 10 ++-- doc/src/refmanual/map.rst | 9 ++-- doc/src/refmanual/max.rst | 10 ++-- doc/src/refmanual/max_element.rst | 10 ++-- doc/src/refmanual/min.rst | 10 ++-- doc/src/refmanual/min_element.rst | 10 ++-- doc/src/refmanual/minus.rst | 10 ++-- doc/src/refmanual/modulus.rst | 9 ++-- doc/src/refmanual/multiplies.rst | 9 ++-- doc/src/refmanual/negate.rst | 9 ++-- doc/src/refmanual/next.rst | 10 ++-- doc/src/refmanual/not_.rst | 9 ++-- doc/src/refmanual/not_equal_to.rst | 9 ++-- doc/src/refmanual/numeric_cast.rst | 9 ++-- doc/src/refmanual/or_.rst | 10 ++-- doc/src/refmanual/order.rst | 10 ++-- doc/src/refmanual/pair.rst | 9 ++-- doc/src/refmanual/partition.rst | 10 ++-- doc/src/refmanual/plus.rst | 10 ++-- doc/src/refmanual/pop_back.rst | 9 ++-- doc/src/refmanual/pop_front.rst | 9 ++-- doc/src/refmanual/preface.rst | 19 -------- doc/src/refmanual/prior.rst | 10 ++-- doc/src/refmanual/protect.rst | 10 ++-- doc/src/refmanual/push_back.rst | 9 ++-- doc/src/refmanual/push_front.rst | 10 ++-- doc/src/refmanual/quote.rst | 10 ++-- doc/src/refmanual/range_c.rst | 10 ++-- doc/src/refmanual/refmanual.py | 35 +++++++------- doc/src/refmanual/refmanual.rst | 23 ++++------ doc/src/refmanual/refmanual.toc | 2 + doc/src/refmanual/remove.rst | 10 ++-- doc/src/refmanual/remove_if.rst | 10 ++-- doc/src/refmanual/replace.rst | 10 ++-- doc/src/refmanual/replace_if.rst | 10 ++-- doc/src/refmanual/reverse.rst | 10 ++-- doc/src/refmanual/reverse_copy.rst | 10 ++-- doc/src/refmanual/reverse_copy_if.rst | 10 ++-- doc/src/refmanual/reverse_fold.rst | 9 ++-- doc/src/refmanual/reverse_iter_fold.rst | 10 ++-- doc/src/refmanual/reverse_partition.rst | 10 ++-- doc/src/refmanual/reverse_remove.rst | 10 ++-- doc/src/refmanual/reverse_remove_if.rst | 10 ++-- doc/src/refmanual/reverse_replace.rst | 10 ++-- doc/src/refmanual/reverse_replace_if.rst | 10 ++-- .../refmanual/reverse_stable_partition.rst | 10 ++-- doc/src/refmanual/reverse_transform.rst | 10 ++-- doc/src/refmanual/reverse_unique.rst | 10 ++-- doc/src/refmanual/sequence_tag.rst | 10 ++-- doc/src/refmanual/set.rst | 9 ++-- doc/src/refmanual/set_c.rst | 9 ++-- doc/src/refmanual/shift_left.rst | 10 ++-- doc/src/refmanual/shift_right.rst | 10 ++-- doc/src/refmanual/single_view.rst | 10 ++-- doc/src/refmanual/size.rst | 10 ++-- doc/src/refmanual/size_t.rst | 9 ++-- doc/src/refmanual/sizeof_.rst | 10 ++-- doc/src/refmanual/sort.rst | 10 ++-- doc/src/refmanual/stable_partition.rst | 10 ++-- doc/src/refmanual/string.rst | 10 ++-- doc/src/refmanual/times.rst | 10 ++-- doc/src/refmanual/transform.rst | 10 ++-- doc/src/refmanual/transform_view.rst | 9 ++-- doc/src/refmanual/unique.rst | 10 ++-- doc/src/refmanual/unpack_args.rst | 10 ++-- doc/src/refmanual/upper_bound.rst | 10 ++-- doc/src/refmanual/value_type.rst | 10 ++-- doc/src/refmanual/vector.rst | 9 ++-- doc/src/refmanual/vector_c.rst | 9 ++-- doc/src/refmanual/void_.rst | 10 ++-- doc/src/refmanual/zip_view.rst | 10 ++-- 233 files changed, 1176 insertions(+), 1167 deletions(-) create mode 100755 doc/src/docutils/parsers/rst/directives/htmlrefdoc.py create mode 100644 doc/src/refmanual/Algorithms-Concepts.rst create mode 100644 doc/src/refmanual/Algorithms-Inserters.rst create mode 100644 doc/src/refmanual/Categorized-Components.rst create mode 100644 doc/src/refmanual/Categorized-Concepts.rst create mode 100644 doc/src/refmanual/Data-Concepts.rst create mode 100644 doc/src/refmanual/Data-Miscellaneous.rst create mode 100644 doc/src/refmanual/Data-Numeric.rst create mode 100644 doc/src/refmanual/Iterators-Iterator.rst delete mode 100644 doc/src/refmanual/Iterators-Metafunctions.rst create mode 100644 doc/src/refmanual/Macros-Broken.rst create mode 100644 doc/src/refmanual/Macros-Introspection.rst create mode 100644 doc/src/refmanual/Metafunctions-Concepts.rst create mode 100644 doc/src/refmanual/Metafunctions-Miscellaneous.rst create mode 100644 doc/src/refmanual/Metafunctions-String.rst create mode 100644 doc/src/refmanual/Metafunctions-Trivial-Summary.rst delete mode 100644 doc/src/refmanual/preface.rst diff --git a/doc/src/README.txt b/doc/src/README.txt index 79b7251..7dfb47d 100644 --- a/doc/src/README.txt +++ b/doc/src/README.txt @@ -35,7 +35,7 @@ Building 4. Do ``python build.py``. It's going to take a couple of minutes to finish. 5. If all goes well, the resulting HTML docs will be placed in - ``$BOOST_ROOT/libs/mpl/doc/src/refmanual/build/`` directory. + ``$BOOST_ROOT/libs/mpl/doc/src/_build/`` directory. .. _Python: http://python.org/ diff --git a/doc/src/build.py b/doc/src/build.py index 41a028b..22de594 100755 --- a/doc/src/build.py +++ b/doc/src/build.py @@ -8,23 +8,28 @@ import shutil import os -def build(): +def build( src_dir, build_dir ): + src = os.path.join( build_dir, 'refmanual.gen' ) + def cleanup(): - if os.path.exists( 'refmanual.gen' ): - os.unlink( 'refmanual.gen' ) + if os.path.exists( src ): + os.unlink( src ) - if os.path.exists( 'build' ): - shutil.rmtree( 'build' ) + if os.path.exists( build_dir ): + shutil.rmtree( build_dir ) def generate_html(): - os.system( 'python refmanual.py' ) - os.mkdir( 'build' ) - os.system( 'rst2htmlrefdoc.py -g -d -t --no-frames --dont-copy-stylesheet --stylesheet-path=style.css --traceback refmanual.gen build/refmanual.html' ) + os.mkdir( build_dir ) + os.chdir( build_dir ) + os.system( 'python %s %s' % ( os.path.join( src_dir, 'refmanual.py' ), build_dir ) ) + os.system( 'rst2htmlrefdoc.py --traceback -g -d -t --no-frames --dont-copy-stylesheet --stylesheet-path=style.css %s refmanual.html' % src ) - os.chdir( 'refmanual' ) cleanup() generate_html() -build() +build( + os.path.join( os.getcwd(), 'refmanual' ) + , os.path.join( os.getcwd(), '_build' ) + ) diff --git a/doc/src/docutils/parsers/rst/directives/htmlrefdoc.py b/doc/src/docutils/parsers/rst/directives/htmlrefdoc.py new file mode 100755 index 0000000..41b20b4 --- /dev/null +++ b/doc/src/docutils/parsers/rst/directives/htmlrefdoc.py @@ -0,0 +1,21 @@ + +# Copyright Aleksey Gurtovoy 2009 +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +from docutils.parsers.rst import Directive +from docutils import nodes + + +class license_and_copyright( nodes.General, nodes.Element ): pass + +class LicenseAndCopyright( Directive ): + has_content = True + + def run( self ): + self.assert_has_content() + result_node = license_and_copyright( rawsource = '\n'.join( self.content ) ) + self.state.nested_parse( self.content, self.content_offset, result_node ) + return [ result_node ] diff --git a/doc/src/docutils/setup.py b/doc/src/docutils/setup.py index 1efe245..73a9195 100755 --- a/doc/src/docutils/setup.py +++ b/doc/src/docutils/setup.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright Aleksey Gurtovoy 2007-2008 +# Copyright Aleksey Gurtovoy 2007-2009 # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at @@ -16,8 +16,9 @@ setup( description="convert C++ rst documentation to a set of HTML pages/frames.", author="Aleksey Gurtovoy", author_email="agurtovoy@meta-comm.com", - packages=['docutils.writers.html4_refdoc'], - package_dir={'docutils.writers.html4_refdoc': 'writers/html4_refdoc'}, + packages=['docutils.writers.html4_refdoc', 'docutils.parsers.rst.directives'], + package_dir={'docutils.writers.html4_refdoc': 'writers/html4_refdoc' + ,'docutils.parsers.rst.directives': 'parsers/rst/directives' }, package_data={'docutils.writers.html4_refdoc': ['frames.css']}, scripts=["tools/rst2htmlrefdoc.py"], ) diff --git a/doc/src/docutils/tools/rst2htmlrefdoc.py b/doc/src/docutils/tools/rst2htmlrefdoc.py index 413f884..ef30d32 100755 --- a/doc/src/docutils/tools/rst2htmlrefdoc.py +++ b/doc/src/docutils/tools/rst2htmlrefdoc.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright Aleksey Gurtovoy 2004-2008 +# Copyright Aleksey Gurtovoy 2004-2009 # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at @@ -13,8 +13,11 @@ try: except: pass -from docutils.core import publish_cmdline, default_description +from docutils.parsers.rst import directives +from docutils.parsers.rst.directives import htmlrefdoc +directives.register_directive( 'copyright', htmlrefdoc.LicenseAndCopyright ) +from docutils.core import publish_cmdline, default_description description = ('Generates "framed" (X)HTML documents from standalone reStructuredText ' 'sources. ' + default_description) diff --git a/doc/src/docutils/writers/html4_refdoc/__init__.py b/doc/src/docutils/writers/html4_refdoc/__init__.py index 2ff3964..19e7b65 100755 --- a/doc/src/docutils/writers/html4_refdoc/__init__.py +++ b/doc/src/docutils/writers/html4_refdoc/__init__.py @@ -134,6 +134,17 @@ class refdoc_translator(html4_frames.frame_pages_translator): self.in_literal_block = False + def visit_license_and_copyright(self, node): + self = self.active_visitor() + self.context.append( len( self.body ) ) + + def depart_license_and_copyright(self, node): + self = self.active_visitor() + start = self.context.pop() + self.footer = self.body[start:] + del self.body[start:] + + def visit_Text(self, node): if not self.in_literal_block: self.__super.visit_Text(self, node) @@ -161,8 +172,19 @@ class refdoc_translator(html4_frames.frame_pages_translator): print 'Unresolved substitution_reference:', node.astext() raise nodes.SkipNode - def _handle_depart_page(self, translator, node): - pass + + def _footer_content(self): + self = self.active_visitor() + parts = ''.join( self.footer ).split( '\n' ) + parts = [ '' % x if x.startswith( 'Copyright' ) else x for x in parts ] + return '' % '\n'.join( parts ) if len( parts ) else '' + + + def _toc_as_text( self, visitor ): + footer_end = visitor.body.pop() + visitor.body.append( self._footer_content() ) + visitor.body.append( footer_end ) + return visitor.astext() def _handle_include_sub(base, self, match): diff --git a/doc/src/refmanual/ASSERT.rst b/doc/src/refmanual/ASSERT.rst index 5a4b982..bb16f09 100644 --- a/doc/src/refmanual/ASSERT.rst +++ b/doc/src/refmanual/ASSERT.rst @@ -1,10 +1,5 @@ .. Macros/Asserts//BOOST_MPL_ASSERT -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_ASSERT ================ @@ -94,3 +89,7 @@ See also |Asserts|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_MSG|, |BOOST_MPL_ASSERT_RELATION| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ASSERT_MSG.rst b/doc/src/refmanual/ASSERT_MSG.rst index 47800d1..fc1a0fa 100644 --- a/doc/src/refmanual/ASSERT_MSG.rst +++ b/doc/src/refmanual/ASSERT_MSG.rst @@ -1,10 +1,5 @@ .. Macros/Asserts//BOOST_MPL_ASSERT_MSG -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_ASSERT_MSG ==================== @@ -132,3 +127,7 @@ See also |Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_RELATION| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ASSERT_NOT.rst b/doc/src/refmanual/ASSERT_NOT.rst index cb6ae33..ff54c2d 100644 --- a/doc/src/refmanual/ASSERT_NOT.rst +++ b/doc/src/refmanual/ASSERT_NOT.rst @@ -1,10 +1,5 @@ .. Macros/Asserts//BOOST_MPL_ASSERT_NOT -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_ASSERT_NOT ==================== @@ -94,3 +89,7 @@ See also |Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_MSG|, |BOOST_MPL_ASSERT_RELATION| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ASSERT_RELATION.rst b/doc/src/refmanual/ASSERT_RELATION.rst index 4c8ef92..e100f09 100644 --- a/doc/src/refmanual/ASSERT_RELATION.rst +++ b/doc/src/refmanual/ASSERT_RELATION.rst @@ -1,10 +1,5 @@ .. Macros/Asserts//BOOST_MPL_ASSERT_RELATION -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_ASSERT_RELATION ========================= @@ -101,3 +96,7 @@ See also |Asserts|, |BOOST_MPL_ASSERT|, |BOOST_MPL_ASSERT_NOT|, |BOOST_MPL_ASSERT_MSG| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst b/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst index a478b78..6260f13 100644 --- a/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst +++ b/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst @@ -1,10 +1,5 @@ .. Macros/Broken Compiler Workarounds//BOOST_MPL_AUX_LAMBDA_SUPPORT -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_AUX_LAMBDA_SUPPORT ============================ @@ -103,3 +98,8 @@ See also .. |PP-tuple| replace:: `PP-tuple `__ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Acknowledgements.rst b/doc/src/refmanual/Acknowledgements.rst index 8763cec..14257a3 100644 --- a/doc/src/refmanual/Acknowledgements.rst +++ b/doc/src/refmanual/Acknowledgements.rst @@ -1,11 +1,10 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The format and language of this reference documentation has been greatly influenced by the SGI's `Standard Template Library Programmer's Guide`__. __ http://www.sgi.com/tech/stl/ - \ No newline at end of file + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Concepts.rst b/doc/src/refmanual/Algorithms-Concepts.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Algorithms-Concepts.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Inserters.rst b/doc/src/refmanual/Algorithms-Inserters.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Algorithms-Inserters.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Iteration.rst b/doc/src/refmanual/Algorithms-Iteration.rst index 51b490a..3fdb1cc 100644 --- a/doc/src/refmanual/Algorithms-Iteration.rst +++ b/doc/src/refmanual/Algorithms-Iteration.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Iteration algorithms are the basic building blocks behind many of the MPL's algorithms, and are usually the first place to look at when starting to build a new one. Abstracting away the details of sequence @@ -22,3 +17,8 @@ approach. through ``iter_fold_if`` |--| they are often not, in particular because the restricted functionality allows for more optimizations. + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Querying.rst b/doc/src/refmanual/Algorithms-Querying.rst index c5fac19..a8e4f28 100644 --- a/doc/src/refmanual/Algorithms-Querying.rst +++ b/doc/src/refmanual/Algorithms-Querying.rst @@ -1,7 +1,6 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Querying Algorithms| replace:: `Querying Algorithms`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Runtime.rst b/doc/src/refmanual/Algorithms-Runtime.rst index 1567679..e93d6f0 100644 --- a/doc/src/refmanual/Algorithms-Runtime.rst +++ b/doc/src/refmanual/Algorithms-Runtime.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. The MPL *runtime algorithms* provide out-of-box support for the common scenarios of crossing compile time/runtime boundary. @@ -13,3 +8,7 @@ .. _runtime algorithm: `Runtime Algorithms`_ .. |runtime algorithms| replace:: `runtime algorithms`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms-Transformation.rst b/doc/src/refmanual/Algorithms-Transformation.rst index f06b1b1..9d245f1 100644 --- a/doc/src/refmanual/Algorithms-Transformation.rst +++ b/doc/src/refmanual/Algorithms-Transformation.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - According to their name, MPL's *transformation*, or *sequence-building algorithms* provide the tools for building new sequences from the existing ones by performing some kind of transformation. A typical transformation @@ -27,3 +22,8 @@ way to perform the required transformation. .. |transformation algorithm| replace:: `transformation algorithm`_ .. _transformation algorithm: `Transformation Algorithms`_ .. |transformation algorithms| replace:: `transformation algorithms`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Algorithms.rst b/doc/src/refmanual/Algorithms.rst index 1494120..7889926 100644 --- a/doc/src/refmanual/Algorithms.rst +++ b/doc/src/refmanual/Algorithms.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL provides a broad range of fundamental algorithms aimed to satisfy the majority of sequential compile-time data processing needs. The algorithms include compile-time counterparts @@ -43,3 +38,8 @@ concept. .. |Output Iterator| replace:: `Output Iterator `__ .. |sequence algorithms| replace:: `sequence algorithms`_ .. _`sequence algorithms`: `Algorithms`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/AssociativeSequence.rst b/doc/src/refmanual/AssociativeSequence.rst index 3685670..346e17a 100644 --- a/doc/src/refmanual/AssociativeSequence.rst +++ b/doc/src/refmanual/AssociativeSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Associative Sequence |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Associative Sequence ==================== @@ -119,3 +114,8 @@ See also .. |value| replace:: `value`_ .. _`value`: `value-part`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/BackExtensibleSequence.rst b/doc/src/refmanual/BackExtensibleSequence.rst index f8ab2e4..340b488 100644 --- a/doc/src/refmanual/BackExtensibleSequence.rst +++ b/doc/src/refmanual/BackExtensibleSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Back Extensible Sequence |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Back Extensible Sequence ======================== @@ -67,3 +62,7 @@ See also |Sequences|, |Extensible Sequence|, |Front Extensible Sequence|, |push_back|, |pop_back|, |back| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/BidirectionalIterator.rst b/doc/src/refmanual/BidirectionalIterator.rst index 21a5002..5ce1dab 100644 --- a/doc/src/refmanual/BidirectionalIterator.rst +++ b/doc/src/refmanual/BidirectionalIterator.rst @@ -1,10 +1,5 @@ .. Iterators/Concepts//Bidirectional Iterator |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Bidirectional Iterator ====================== @@ -80,3 +75,7 @@ See also |Iterators|, |Forward Iterator|, |Random Access Iterator|, |Bidirectional Sequence|, |prior| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/BidirectionalSequence.rst b/doc/src/refmanual/BidirectionalSequence.rst index 940cb19..1ebd110 100644 --- a/doc/src/refmanual/BidirectionalSequence.rst +++ b/doc/src/refmanual/BidirectionalSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Bidirectional Sequence |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Bidirectional Sequence ====================== @@ -61,3 +56,7 @@ See also |Sequences|, |Forward Sequence|, |Random Access Sequence|, |Bidirectional Iterator|, |begin| / |end|, |back| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/CFG_NO_HAS_XXX.rst b/doc/src/refmanual/CFG_NO_HAS_XXX.rst index 0bbc36c..d2ac992 100644 --- a/doc/src/refmanual/CFG_NO_HAS_XXX.rst +++ b/doc/src/refmanual/CFG_NO_HAS_XXX.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_CFG_NO_HAS_XXX |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_CFG_NO_HAS_XXX ======================== @@ -30,3 +25,7 @@ See also |Macros|, |Configuration|, |BOOST_MPL_HAS_XXX_TRAIT_DEF|, |BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/CFG_NO_PREPROCESSED.rst b/doc/src/refmanual/CFG_NO_PREPROCESSED.rst index 69d4df6..8698d93 100644 --- a/doc/src/refmanual/CFG_NO_PREPROCESSED.rst +++ b/doc/src/refmanual/CFG_NO_PREPROCESSED.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS ===================================== .. _`BOOST_MPL_CFG_NO_PREPROCESSED`: @@ -42,3 +37,8 @@ See also .. |preprocessed headers| replace:: `preprocessed headers`_ .. _`preprocessed headers`: `BOOST_MPL_CFG_NO_PREPROCESSED`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Categorized-Components.rst b/doc/src/refmanual/Categorized-Components.rst new file mode 100644 index 0000000..9df351f --- /dev/null +++ b/doc/src/refmanual/Categorized-Components.rst @@ -0,0 +1,6 @@ + +.. include:: ../_build/index.gen + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Categorized-Concepts.rst b/doc/src/refmanual/Categorized-Concepts.rst new file mode 100644 index 0000000..4fda296 --- /dev/null +++ b/doc/src/refmanual/Categorized-Concepts.rst @@ -0,0 +1,6 @@ + +.. include:: ../_build/concepts.gen + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Categorized.rst b/doc/src/refmanual/Categorized.rst index 5d6e780..e42af03 100644 --- a/doc/src/refmanual/Categorized.rst +++ b/doc/src/refmanual/Categorized.rst @@ -1,17 +1,7 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. _`Categorized`: -Concepts -//////// -.. include:: concepts.gen - -Components -////////// - -.. include:: index.gen +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Data-Concepts.rst b/doc/src/refmanual/Data-Concepts.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Data-Concepts.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Data-Miscellaneous.rst b/doc/src/refmanual/Data-Miscellaneous.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Data-Miscellaneous.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Data-Numeric.rst b/doc/src/refmanual/Data-Numeric.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Data-Numeric.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Data.rst b/doc/src/refmanual/Data.rst index 1ccb862..bf345f4 100644 --- a/doc/src/refmanual/Data.rst +++ b/doc/src/refmanual/Data.rst @@ -1,9 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. _`Data`: .. |Data Types| replace:: `Data Types`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ExtensibleAssociativeSeq.rst b/doc/src/refmanual/ExtensibleAssociativeSeq.rst index bd4e2b2..d543c75 100644 --- a/doc/src/refmanual/ExtensibleAssociativeSeq.rst +++ b/doc/src/refmanual/ExtensibleAssociativeSeq.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Extensible Associative Sequence |80 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Extensible Associative Sequence =============================== @@ -90,3 +85,7 @@ See also |Sequences|, |Associative Sequence|, |insert|, |erase|, |clear| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ExtensibleSequence.rst b/doc/src/refmanual/ExtensibleSequence.rst index 7b19b86..73ddb94 100644 --- a/doc/src/refmanual/ExtensibleSequence.rst +++ b/doc/src/refmanual/ExtensibleSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Extensible Sequence |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Extensible Sequence =================== @@ -80,3 +75,7 @@ See also |Sequences|, |Back Extensible Sequence|, |insert|, |insert_range|, |erase|, |clear| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ForwardIterator.rst b/doc/src/refmanual/ForwardIterator.rst index 1832123..5a79049 100644 --- a/doc/src/refmanual/ForwardIterator.rst +++ b/doc/src/refmanual/ForwardIterator.rst @@ -1,10 +1,5 @@ .. Iterators/Concepts//Forward Iterator |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Forward Iterator ================ @@ -128,3 +123,7 @@ See also |Iterators|, |Bidirectional Iterator|, |Forward Sequence|, |deref|, |next| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ForwardSequence.rst b/doc/src/refmanual/ForwardSequence.rst index d014cc4..2ec8d4f 100644 --- a/doc/src/refmanual/ForwardSequence.rst +++ b/doc/src/refmanual/ForwardSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Forward Sequence |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Forward Sequence ================ @@ -94,3 +89,7 @@ See also |Sequences|, |Bidirectional Sequence|, |Forward Iterator|, |begin| / |end|, |size|, |empty|, |front| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/FrontExtensibleSequence.rst b/doc/src/refmanual/FrontExtensibleSequence.rst index 197f71c..50ce782 100644 --- a/doc/src/refmanual/FrontExtensibleSequence.rst +++ b/doc/src/refmanual/FrontExtensibleSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Front Extensible Sequence |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Front Extensible Sequence ========================= @@ -67,3 +62,7 @@ See also |Sequences|, |Extensible Sequence|, |Back Extensible Sequence|, |push_front|, |pop_front|, |front| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/HAS_XXX_TRAIT_DEF.rst b/doc/src/refmanual/HAS_XXX_TRAIT_DEF.rst index 41ef26c..ac67a72 100644 --- a/doc/src/refmanual/HAS_XXX_TRAIT_DEF.rst +++ b/doc/src/refmanual/HAS_XXX_TRAIT_DEF.rst @@ -1,10 +1,5 @@ .. Macros/Introspection//BOOST_MPL_HAS_XXX_TRAIT_DEF -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_HAS_XXX_TRAIT_DEF =========================== @@ -119,3 +114,7 @@ See also |Macros|, |BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF|, |BOOST_MPL_CFG_NO_HAS_XXX| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/HAS_XXX_TRAIT_NAMED_DEF.rst b/doc/src/refmanual/HAS_XXX_TRAIT_NAMED_DEF.rst index c976e0b..05dfbd0 100644 --- a/doc/src/refmanual/HAS_XXX_TRAIT_NAMED_DEF.rst +++ b/doc/src/refmanual/HAS_XXX_TRAIT_NAMED_DEF.rst @@ -1,10 +1,5 @@ .. Macros/Introspection//BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF ================================= @@ -156,3 +151,7 @@ See also |Macros|, |BOOST_MPL_HAS_XXX_TRAIT_DEF|, |BOOST_MPL_CFG_NO_HAS_XXX| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Inserter.rst b/doc/src/refmanual/Inserter.rst index e0468f8..9fceb3f 100644 --- a/doc/src/refmanual/Inserter.rst +++ b/doc/src/refmanual/Inserter.rst @@ -1,10 +1,5 @@ .. Algorithms/Concepts//Inserter -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Inserter ======== @@ -77,3 +72,8 @@ See also -------- |Algorithms|, |Transformation Algorithms|, |[inserter]|, |front_inserter|, |back_inserter| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/IntegralConstant.rst b/doc/src/refmanual/IntegralConstant.rst index 3788129..0d0f326 100644 --- a/doc/src/refmanual/IntegralConstant.rst +++ b/doc/src/refmanual/IntegralConstant.rst @@ -1,10 +1,5 @@ .. Data Types/Concepts//Integral Constant -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Integral Constant ================= @@ -80,3 +75,7 @@ See also |Data Types|, |Integral Sequence Wrapper|, |integral_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/IntegralSequenceWrapper.rst b/doc/src/refmanual/IntegralSequenceWrapper.rst index c15e516..d936627 100644 --- a/doc/src/refmanual/IntegralSequenceWrapper.rst +++ b/doc/src/refmanual/IntegralSequenceWrapper.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Integral Sequence Wrapper |90 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Integral Sequence Wrapper ========================= @@ -119,3 +114,7 @@ See also |Sequences|, |Variadic Sequence|, |Integral Constant| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Iterators-Concepts.rst b/doc/src/refmanual/Iterators-Concepts.rst index c915473..86e8211 100644 --- a/doc/src/refmanual/Iterators-Concepts.rst +++ b/doc/src/refmanual/Iterators-Concepts.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - All iterators in MPL are classified into three iterator concepts, or `categories`, named according to the type of traversal provided. The categories are: |Forward Iterator|, |Bidirectional Iterator|, and @@ -15,5 +10,9 @@ Because of the inherently immutable nature of the value access, MPL iterators escape the problems of the traversal-only categorization discussed at length in [n1550]_. - .. [n1550] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1550.htm + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Iterators-Iterator.rst b/doc/src/refmanual/Iterators-Iterator.rst new file mode 100644 index 0000000..da2bcff --- /dev/null +++ b/doc/src/refmanual/Iterators-Iterator.rst @@ -0,0 +1,9 @@ + +From the MPL standpoint, all iterators are opaque types. Incrementing, +dereferencing and the rest of iterator functionality is accessed +through the associated iterator metafunctions. + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Iterators-Metafunctions.rst b/doc/src/refmanual/Iterators-Metafunctions.rst deleted file mode 100644 index b9f917c..0000000 --- a/doc/src/refmanual/Iterators-Metafunctions.rst +++ /dev/null @@ -1,12 +0,0 @@ - -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -From the implementation standpoint, iterators are almost-opaque types which -guarantee to provide us with the only memeber that we can access directly: -their category. Incrementing, dereferencing and the rest of iterator -functionality is available to us through the accosiated iterator -metafunctions. - diff --git a/doc/src/refmanual/Iterators.rst b/doc/src/refmanual/Iterators.rst index 147c438..2be2092 100644 --- a/doc/src/refmanual/Iterators.rst +++ b/doc/src/refmanual/Iterators.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Iterators are generic means of addressing a particular element or a range of sequential elements in a sequence. They are also a mechanism that makes it possible to decouple `algorithms`__ from concrete compile-time `sequence @@ -17,3 +12,8 @@ __ `label-Sequences-Classes`_ .. Analogy with STL iterators? .. More? + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_LIST_SIZE.rst b/doc/src/refmanual/LIMIT_LIST_SIZE.rst index abf5972..e4f17b4 100644 --- a/doc/src/refmanual/LIMIT_LIST_SIZE.rst +++ b/doc/src/refmanual/LIMIT_LIST_SIZE.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_LIST_SIZE |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_LIST_SIZE ========================= @@ -52,3 +47,7 @@ See also |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS|, |BOOST_MPL_LIMIT_VECTOR_SIZE| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_MAP_SIZE.rst b/doc/src/refmanual/LIMIT_MAP_SIZE.rst index 45a7b1a..e887e3b 100644 --- a/doc/src/refmanual/LIMIT_MAP_SIZE.rst +++ b/doc/src/refmanual/LIMIT_MAP_SIZE.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_MAP_SIZE |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_MAP_SIZE ======================== @@ -61,3 +56,7 @@ See also |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS|, |BOOST_MPL_LIMIT_SET_SIZE| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_METAFUNCTION_ARITY.rst b/doc/src/refmanual/LIMIT_METAFUNCTION_ARITY.rst index e674ea7..4c043e9 100644 --- a/doc/src/refmanual/LIMIT_METAFUNCTION_ARITY.rst +++ b/doc/src/refmanual/LIMIT_METAFUNCTION_ARITY.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_METAFUNCTION_ARITY |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_METAFUNCTION_ARITY ================================== @@ -65,3 +60,7 @@ See also |Macros|, |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_SET_SIZE.rst b/doc/src/refmanual/LIMIT_SET_SIZE.rst index 34201a3..897af59 100644 --- a/doc/src/refmanual/LIMIT_SET_SIZE.rst +++ b/doc/src/refmanual/LIMIT_SET_SIZE.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_SET_SIZE |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_SET_SIZE ======================== @@ -51,3 +46,8 @@ See also -------- |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS|, |BOOST_MPL_LIMIT_MAP_SIZE| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_STRING_SIZE.rst b/doc/src/refmanual/LIMIT_STRING_SIZE.rst index 4754e90..f18b2d7 100644 --- a/doc/src/refmanual/LIMIT_STRING_SIZE.rst +++ b/doc/src/refmanual/LIMIT_STRING_SIZE.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_STRING_SIZE |65 -.. Copyright Eric Niebler 2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_STRING_SIZE =========================== @@ -50,3 +45,7 @@ See also |Configuration|, |BOOST_MPL_LIMIT_VECTOR_SIZE| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_UNROLLING.rst b/doc/src/refmanual/LIMIT_UNROLLING.rst index aeafeab..eee5f08 100644 --- a/doc/src/refmanual/LIMIT_UNROLLING.rst +++ b/doc/src/refmanual/LIMIT_UNROLLING.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_UNROLLING |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_UNROLLING ========================= @@ -41,3 +36,8 @@ See also -------- |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LIMIT_VECTOR_SIZE.rst b/doc/src/refmanual/LIMIT_VECTOR_SIZE.rst index 728ae72..0c30f41 100644 --- a/doc/src/refmanual/LIMIT_VECTOR_SIZE.rst +++ b/doc/src/refmanual/LIMIT_VECTOR_SIZE.rst @@ -1,10 +1,5 @@ .. Macros/Configuration//BOOST_MPL_LIMIT_VECTOR_SIZE |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - BOOST_MPL_LIMIT_VECTOR_SIZE =========================== @@ -52,3 +47,7 @@ See also |Configuration|, |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS|, |BOOST_MPL_LIMIT_LIST_SIZE| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/LambdaExpression.rst b/doc/src/refmanual/LambdaExpression.rst index e073933..af5f013 100644 --- a/doc/src/refmanual/LambdaExpression.rst +++ b/doc/src/refmanual/LambdaExpression.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Lambda Expression |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Lambda Expression ================= @@ -40,3 +35,8 @@ See also -------- |Metafunctions|, |Placeholders|, |apply|, |lambda| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Macros-Asserts.rst b/doc/src/refmanual/Macros-Asserts.rst index f4e57f6..895df5e 100644 --- a/doc/src/refmanual/Macros-Asserts.rst +++ b/doc/src/refmanual/Macros-Asserts.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL supplies a suite of static assertion macros that are specifically designed to generate maximally useful and informative error messages within the diagnostic capabilities of each compiler. @@ -12,3 +7,8 @@ All assert macros can be used at class, function, or namespace scope. .. |Asserts| replace:: `Asserts`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Macros-Broken.rst b/doc/src/refmanual/Macros-Broken.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Macros-Broken.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Macros-Configuration.rst b/doc/src/refmanual/Macros-Configuration.rst index 59f655e..f610ff3 100644 --- a/doc/src/refmanual/Macros-Configuration.rst +++ b/doc/src/refmanual/Macros-Configuration.rst @@ -1,7 +1,6 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Configuration| replace:: `Configuration`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Macros-Introspection.rst b/doc/src/refmanual/Macros-Introspection.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Macros-Introspection.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Macros.rst b/doc/src/refmanual/Macros.rst index db0ed9b..9061dfe 100644 --- a/doc/src/refmanual/Macros.rst +++ b/doc/src/refmanual/Macros.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Being a *template* metaprogramming framework, the MPL concentrates on getting one thing done well and leaves most of the clearly preprocessor-related tasks to the corresponding specialized @@ -21,3 +16,7 @@ __ http://www.boost.org/libs/preprocessor/doc/index.html .. [Ve03] Vesa Karvonen, `The Order Programming Language`, 2003. + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunction.rst b/doc/src/refmanual/Metafunction.rst index 9f1520c..34951ff 100644 --- a/doc/src/refmanual/Metafunction.rst +++ b/doc/src/refmanual/Metafunction.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Metafunction |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Metafunction ============ @@ -100,3 +95,7 @@ See also |Metafunctions|, |Metafunction Class|, |Lambda Expression|, |Invocation|, |apply|, |lambda|, |bind| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/MetafunctionClass.rst b/doc/src/refmanual/MetafunctionClass.rst index 81ad2ac..0cf58b3 100644 --- a/doc/src/refmanual/MetafunctionClass.rst +++ b/doc/src/refmanual/MetafunctionClass.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Metafunction Class |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Metafunction Class ================== @@ -89,3 +84,8 @@ See also -------- |Metafunctions|, |Metafunction|, |Lambda Expression|, |Invocation|, |apply_wrap|, |bind|, |quote| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Arithmetic.rst b/doc/src/refmanual/Metafunctions-Arithmetic.rst index bbe600c..d83e5bf 100644 --- a/doc/src/refmanual/Metafunctions-Arithmetic.rst +++ b/doc/src/refmanual/Metafunctions-Arithmetic.rst @@ -1,9 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Arithmetic Operations| replace:: `Arithmetic Operations`_ .. |arithmetic| replace:: arithmetic_ .. _arithmetic: `Arithmetic Operations`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Bitwise.rst b/doc/src/refmanual/Metafunctions-Bitwise.rst index 3bd7085..67eda4c 100644 --- a/doc/src/refmanual/Metafunctions-Bitwise.rst +++ b/doc/src/refmanual/Metafunctions-Bitwise.rst @@ -1,9 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Bitwise Operations| replace:: `Bitwise Operations`_ .. |bitwise| replace:: `bitwise`_ .. _`bitwise`: `Bitwise Operations`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Comparisons.rst b/doc/src/refmanual/Metafunctions-Comparisons.rst index 9a8541b..f4eb385 100644 --- a/doc/src/refmanual/Metafunctions-Comparisons.rst +++ b/doc/src/refmanual/Metafunctions-Comparisons.rst @@ -1,9 +1,9 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Comparisons| replace:: `Comparisons`_ .. |comparison| replace:: `comparison`_ .. _`comparison`: `Comparisons`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Composition.rst b/doc/src/refmanual/Metafunctions-Composition.rst index 0d7482b..21fbd5a 100644 --- a/doc/src/refmanual/Metafunctions-Composition.rst +++ b/doc/src/refmanual/Metafunctions-Composition.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |Composition and Argument Binding| replace:: `Composition and Argument Binding`_ .. |composition| replace:: `composition`_ @@ -11,3 +6,8 @@ .. |argument binding| replace:: `argument binding`_ .. _`argument binding`: `Composition and Argument Binding`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Concepts.rst b/doc/src/refmanual/Metafunctions-Concepts.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Metafunctions-Concepts.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Conditional.rst b/doc/src/refmanual/Metafunctions-Conditional.rst index f85f197..932f858 100644 --- a/doc/src/refmanual/Metafunctions-Conditional.rst +++ b/doc/src/refmanual/Metafunctions-Conditional.rst @@ -1,7 +1,6 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |control flow| replace:: `control flow`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Invocation.rst b/doc/src/refmanual/Metafunctions-Invocation.rst index b32c367..dc1446d 100644 --- a/doc/src/refmanual/Metafunctions-Invocation.rst +++ b/doc/src/refmanual/Metafunctions-Invocation.rst @@ -1,7 +1,6 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |invocation| replace:: `invocation`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Logical.rst b/doc/src/refmanual/Metafunctions-Logical.rst index 41402b2..225c5ce 100644 --- a/doc/src/refmanual/Metafunctions-Logical.rst +++ b/doc/src/refmanual/Metafunctions-Logical.rst @@ -1,11 +1,11 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |logical| replace:: `logical`_ .. _`logical`: `Logical Operations`_ .. |Logical Operations| replace:: `Logical Operations`_ .. |logical operations| replace:: `logical operations`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Miscellaneous.rst b/doc/src/refmanual/Metafunctions-Miscellaneous.rst new file mode 100644 index 0000000..7d74332 --- /dev/null +++ b/doc/src/refmanual/Metafunctions-Miscellaneous.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-String.rst b/doc/src/refmanual/Metafunctions-String.rst new file mode 100644 index 0000000..f434203 --- /dev/null +++ b/doc/src/refmanual/Metafunctions-String.rst @@ -0,0 +1,4 @@ + +.. copyright:: Copyright 2009 Eric Niebler + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Trivial-Summary.rst b/doc/src/refmanual/Metafunctions-Trivial-Summary.rst new file mode 100644 index 0000000..032062d --- /dev/null +++ b/doc/src/refmanual/Metafunctions-Trivial-Summary.rst @@ -0,0 +1,41 @@ +.. Metafunctions/Trivial//Trivial Metafunctions Summary |10 + +Trivial Metafunctions Summary +============================= + +In the following table, ``x`` is an arbitrary class type. + +.. |first| replace:: `:refentry:`first` <|first link|>`__ +.. |second| replace:: `:refentry:`second` <|second link|>`__ +.. |base| replace:: `:refentry:`base` <|base link|>__ + +.. |first link| replace:: `trivial-first`_ +.. |second link| replace:: `trivial-second`_ +.. |base link| replace:: `trivial-base`_ + + +.. _`trivial-first`: +.. _`trivial-second`: +.. _`trivial-base`: + + ++---------------------------+-------------------------------------------+ +| Metafunction | Header | ++===========================+===========================================+ +| ``first::type`` | ``#include `` | ++---------------------------+-------------------------------------------+ +| ``second::type`` | ``#include `` | ++---------------------------+-------------------------------------------+ +| ``base::type`` | ``#include `` | ++---------------------------+-------------------------------------------+ + + +See Also +-------- + +|Metafunctions|, |Trivial Metafunction| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Trivial.rst b/doc/src/refmanual/Metafunctions-Trivial.rst index 5373e0b..0faf092 100644 --- a/doc/src/refmanual/Metafunctions-Trivial.rst +++ b/doc/src/refmanual/Metafunctions-Trivial.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL provides a number of |Trivial Metafunction|\ s that a nothing more than thin wrappers for a differently-named class nested type members. While important in the context of `in-place metafunction composition`__, these metafunctions have @@ -17,41 +12,10 @@ presented below. __ `Composition and Argument Binding`_ __ `Trivial Metafunction`_ - -Trivial Metafunctions Summary -============================= - -In the following table, ``x`` is an arbitrary class type. - -.. |first| replace:: `:refentry:`first` <|first link|>`__ -.. |second| replace:: `:refentry:`second` <|second link|>`__ -.. |base| replace:: `:refentry:`base` <|base link|>__ - -.. |first link| replace:: `trivial-first`_ -.. |second link| replace:: `trivial-second`_ -.. |base link| replace:: `trivial-base`_ - - -.. _`trivial-first`: -.. _`trivial-second`: -.. _`trivial-base`: - - -+---------------------------+-------------------------------------------+ -| Metafunction | Header | -+===========================+===========================================+ -| ``first::type`` | ``#include `` | -+---------------------------+-------------------------------------------+ -| ``second::type`` | ``#include `` | -+---------------------------+-------------------------------------------+ -| ``base::type`` | ``#include `` | -+---------------------------+-------------------------------------------+ - - -See Also --------- - -|Metafunctions|, |Trivial Metafunction| - .. |Trivial Metafunctions| replace:: `Trivial Metafunctions`_ .. _`Trivial Metafunctions`: `label-Metafunctions-Trivial`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions-Type.rst b/doc/src/refmanual/Metafunctions-Type.rst index 78d7f98..043fbed 100644 --- a/doc/src/refmanual/Metafunctions-Type.rst +++ b/doc/src/refmanual/Metafunctions-Type.rst @@ -1,7 +1,6 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. |type selection| replace:: `type selection`_ + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Metafunctions.rst b/doc/src/refmanual/Metafunctions.rst index 03c3d83..911501a 100644 --- a/doc/src/refmanual/Metafunctions.rst +++ b/doc/src/refmanual/Metafunctions.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL includes a number of predefined metafunctions that can be roughly classified in two categories: `general purpose metafunctions`, dealing with conditional |type selection| and higher-order metafunction |invocation|, @@ -54,3 +49,8 @@ allow to pass up to N arguments, where N is defined by the value of internally, they elude these problems, so if you aim for portability, it is generally adviced to use them in the place of the conventional operators, even at the price of slightly decreased readability. + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/NumericMetafunction.rst b/doc/src/refmanual/NumericMetafunction.rst index 3382c81..4498572 100644 --- a/doc/src/refmanual/NumericMetafunction.rst +++ b/doc/src/refmanual/NumericMetafunction.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Numeric Metafunction |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Numeric Metafunction ==================== @@ -142,3 +137,7 @@ See also |Tag Dispatched Metafunction|, |Metafunctions|, |numeric_cast| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/PlaceholderExpression.rst b/doc/src/refmanual/PlaceholderExpression.rst index d35fb0a..bb053f0 100644 --- a/doc/src/refmanual/PlaceholderExpression.rst +++ b/doc/src/refmanual/PlaceholderExpression.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Placeholder Expression |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Placeholder Expression ====================== @@ -47,3 +42,8 @@ See also -------- |Lambda Expression|, |Placeholders|, |Metafunctions|, |apply|, |lambda| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Placeholders.rst b/doc/src/refmanual/Placeholders.rst index bcb34b5..63f0ba2 100644 --- a/doc/src/refmanual/Placeholders.rst +++ b/doc/src/refmanual/Placeholders.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//_1,_2,..._n |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Placeholders ============ .. _`placeholder`: @@ -117,3 +112,8 @@ See also .. _`_5`: `Placeholders`_ .. |_1,_2,..._n| replace:: |_1|, |_2|, |_3|,\ |...| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/RandomAccessIterator.rst b/doc/src/refmanual/RandomAccessIterator.rst index b95ba17..ad4e515 100644 --- a/doc/src/refmanual/RandomAccessIterator.rst +++ b/doc/src/refmanual/RandomAccessIterator.rst @@ -1,10 +1,5 @@ .. Iterators/Concepts//Random Access Iterator |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Random Access Iterator ====================== @@ -80,3 +75,7 @@ See also |Iterators|, |Bidirectional Iterator|, |Random Access Sequence|, |advance|, |distance| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/RandomAccessSequence.rst b/doc/src/refmanual/RandomAccessSequence.rst index a10864a..85c84b5 100644 --- a/doc/src/refmanual/RandomAccessSequence.rst +++ b/doc/src/refmanual/RandomAccessSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Random Access Sequence |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Random Access Sequence ====================== @@ -64,3 +59,7 @@ See also |Sequences|, |Bidirectional Sequence|, |Extensible Sequence|, |Random Access Iterator|, |begin| / |end|, |at| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/ReversibleAlgorithm.rst b/doc/src/refmanual/ReversibleAlgorithm.rst index 07bd8f8..cc74a0e 100644 --- a/doc/src/refmanual/ReversibleAlgorithm.rst +++ b/doc/src/refmanual/ReversibleAlgorithm.rst @@ -1,10 +1,5 @@ .. Algorithms/Concepts//Reversible Algorithm -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Reversible Algorithm ==================== @@ -166,3 +161,7 @@ See also |Transformation Algorithms|, |Inserter| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Sequences-Classes.rst b/doc/src/refmanual/Sequences-Classes.rst index 076145e..e4659e3 100644 --- a/doc/src/refmanual/Sequences-Classes.rst +++ b/doc/src/refmanual/Sequences-Classes.rst @@ -1,11 +1,11 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL provides a large number of predefined general-purpose sequence classes covering most of the typical metaprogramming needs out-of-box. .. For all library-supplied sequences a publicly-derived class with no additional members is equivalent except for type identity. + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Sequences-Concepts.rst b/doc/src/refmanual/Sequences-Concepts.rst index 2d54542..10798e9 100644 --- a/doc/src/refmanual/Sequences-Concepts.rst +++ b/doc/src/refmanual/Sequences-Concepts.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL |iterators|, with two additional classification dimensions: `extensibility` and `associativeness`. @@ -31,3 +26,8 @@ The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL .. |sequence concepts| replace:: `sequence concepts`_ .. _`sequence concepts`: `label-Sequences-Concepts`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Sequences-Intrinsic.rst b/doc/src/refmanual/Sequences-Intrinsic.rst index 47bc5d8..e1cad78 100644 --- a/doc/src/refmanual/Sequences-Intrinsic.rst +++ b/doc/src/refmanual/Sequences-Intrinsic.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The metafunctions that form the essential interface of sequence `classes`__ documented in the corresponding |sequence concepts| are known as *intrinsic sequence operations*. They differ from generic @@ -20,3 +15,7 @@ usually implemented as member functions. that you've implemented the core functionality they rely on (such as |begin| / |end|). + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Sequences-Views.rst b/doc/src/refmanual/Sequences-Views.rst index 2ec758b..ddf6172 100644 --- a/doc/src/refmanual/Sequences-Views.rst +++ b/doc/src/refmanual/Sequences-Views.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - A *view* is a sequence adaptor delivering an altered presentation of one or more underlying sequences. Views are lazy, meaning that their elements are only computed on demand. Similarly to the short-circuit @@ -14,3 +9,8 @@ algorithmic problems can be solved in a simpler, more conceptually precise, more expressive way. .. |Views| replace:: `Views`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Sequences.rst b/doc/src/refmanual/Sequences.rst index 9fe234d..b837751 100644 --- a/doc/src/refmanual/Sequences.rst +++ b/doc/src/refmanual/Sequences.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Compile-time sequences of types are one of the basic concepts of C++ template metaprogramming. Differences in types of objects being manipulated is the most common point of variability of similar, but @@ -21,3 +16,8 @@ and understanding of sequence properties, guarantees and characteristics, as well as a first-class implementation of that framework |--| a wealth of tools for concise, convenient, conceptually precise and efficient sequence manipulation. + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/TagDispatchedMetafunction.rst b/doc/src/refmanual/TagDispatchedMetafunction.rst index d0446fe..744288f 100644 --- a/doc/src/refmanual/TagDispatchedMetafunction.rst +++ b/doc/src/refmanual/TagDispatchedMetafunction.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Tag Dispatched Metafunction |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Tag Dispatched Metafunction =========================== @@ -166,3 +161,8 @@ See also .. |tag dispatched| replace:: `tag dispatched`_ .. _`tag dispatched`: `Tag Dispatched Metafunction`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/Terminology.rst b/doc/src/refmanual/Terminology.rst index 67c4400..a67716a 100644 --- a/doc/src/refmanual/Terminology.rst +++ b/doc/src/refmanual/Terminology.rst @@ -1,9 +1,4 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. _`Overloaded name`: Overloaded name @@ -40,3 +35,8 @@ Bind expression .. |overloaded name| replace:: `overloaded name`_ .. |concept-identical| replace:: `concept-identical`_ .. |bind expression| replace:: `bind expression`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/TrivialMetafunction.rst b/doc/src/refmanual/TrivialMetafunction.rst index b2dbe5f..5dd6291 100644 --- a/doc/src/refmanual/TrivialMetafunction.rst +++ b/doc/src/refmanual/TrivialMetafunction.rst @@ -1,10 +1,5 @@ .. Metafunctions/Concepts//Trivial Metafunction |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Trivial Metafunction ==================== @@ -63,3 +58,7 @@ See also |Metafunctions|, |Trivial Metafunctions|, |identity| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/VariadicSequence.rst b/doc/src/refmanual/VariadicSequence.rst index 926d4ce..0661eab 100644 --- a/doc/src/refmanual/VariadicSequence.rst +++ b/doc/src/refmanual/VariadicSequence.rst @@ -1,10 +1,5 @@ .. Sequences/Concepts//Variadic Sequence |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Variadic Sequence ================= @@ -121,3 +116,8 @@ See also .. |numbered forms| replace:: `numbered forms`_ .. _`numbered forms`: `Variadic Sequence`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/accumulate.rst b/doc/src/refmanual/accumulate.rst index cb3e4f0..8657253 100644 --- a/doc/src/refmanual/accumulate.rst +++ b/doc/src/refmanual/accumulate.rst @@ -1,10 +1,5 @@ .. Algorithms/Iteration Algorithms//accumulate |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - accumulate ========== @@ -105,3 +100,8 @@ See also -------- |Algorithms|, |fold|, |reverse_fold|, |iter_fold|, |reverse_iter_fold|, |copy|, |copy_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/advance.rst b/doc/src/refmanual/advance.rst index 187b992..33eee72 100644 --- a/doc/src/refmanual/advance.rst +++ b/doc/src/refmanual/advance.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//advance |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - advance ======= @@ -132,3 +127,8 @@ See also .. _bidirectional: `Bidirectional Iterator`_ .. |random access| replace:: `random access`_ .. _random access: `Random Access Iterator`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/always.rst b/doc/src/refmanual/always.rst index 3539188..989b9c4 100644 --- a/doc/src/refmanual/always.rst +++ b/doc/src/refmanual/always.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//always |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - always ====== @@ -90,3 +85,8 @@ See also -------- |Metafunctions|, |Metafunction Class|, |identity|, |bind|, |apply| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/and_.rst b/doc/src/refmanual/and_.rst index 27143b1..16858aa 100644 --- a/doc/src/refmanual/and_.rst +++ b/doc/src/refmanual/and_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Logical Operations//and_ |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - and\_ ===== @@ -107,3 +102,7 @@ See also |Metafunctions|, |Logical Operations|, |or_|, |not_| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/apply.rst b/doc/src/refmanual/apply.rst index e7370c8..f11f25a 100644 --- a/doc/src/refmanual/apply.rst +++ b/doc/src/refmanual/apply.rst @@ -1,10 +1,5 @@ .. Metafunctions/Invocation//apply |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - apply ===== @@ -117,3 +112,8 @@ See also -------- |Metafunctions|, |apply_wrap|, |lambda|, |quote|, |bind| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/apply_wrap.rst b/doc/src/refmanual/apply_wrap.rst index 71d9fc9..08e148f 100644 --- a/doc/src/refmanual/apply_wrap.rst +++ b/doc/src/refmanual/apply_wrap.rst @@ -1,10 +1,5 @@ .. Metafunctions/Invocation//apply_wrap |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - apply_wrap ========== @@ -132,3 +127,8 @@ See also -------- |Metafunctions|, |Invocation|, |apply|, |lambda|, |quote|, |bind|, |protect| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/arg.rst b/doc/src/refmanual/arg.rst index 4569bb0..7f4312a 100644 --- a/doc/src/refmanual/arg.rst +++ b/doc/src/refmanual/arg.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//arg |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - arg === @@ -93,3 +88,8 @@ See also -------- |Composition and Argument Binding|, |Placeholders|, |lambda|, |bind|, |apply|, |apply_wrap| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/at.rst b/doc/src/refmanual/at.rst index e163592..a04184d 100644 --- a/doc/src/refmanual/at.rst +++ b/doc/src/refmanual/at.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//at -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - at == @@ -176,3 +171,8 @@ See also -------- |Forward Sequence|, |Random Access Sequence|, |Associative Sequence|, |at_c|, |front|, |back| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/at_c.rst b/doc/src/refmanual/at_c.rst index ab2207f..0312fb5 100644 --- a/doc/src/refmanual/at_c.rst +++ b/doc/src/refmanual/at_c.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//at_c -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - at_c ==== @@ -103,3 +98,8 @@ See also -------- |Forward Sequence|, |Random Access Sequence|, |at|, |front|, |back| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/back.rst b/doc/src/refmanual/back.rst index 1c687a4..3e10ba7 100644 --- a/doc/src/refmanual/back.rst +++ b/doc/src/refmanual/back.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//back -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - back ==== @@ -102,3 +97,7 @@ See also |Bidirectional Sequence|, |front|, |push_back|, |end|, |deref|, |at| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/back_inserter.rst b/doc/src/refmanual/back_inserter.rst index e308c84..037ec83 100644 --- a/doc/src/refmanual/back_inserter.rst +++ b/doc/src/refmanual/back_inserter.rst @@ -1,10 +1,5 @@ .. Algorithms/Inserters//back_inserter -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - back_inserter ============= @@ -92,3 +87,8 @@ See also -------- |Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |front_inserter|, |push_back| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/begin.rst b/doc/src/refmanual/begin.rst index b321f3f..7f5a3ea 100644 --- a/doc/src/refmanual/begin.rst +++ b/doc/src/refmanual/begin.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//begin -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - begin ===== @@ -101,3 +96,8 @@ See also -------- |Iterators|, |Forward Sequence|, |end|, |size|, |empty| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/bind.rst b/doc/src/refmanual/bind.rst index 7804526..b1e14d6 100644 --- a/doc/src/refmanual/bind.rst +++ b/doc/src/refmanual/bind.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//bind |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - bind ==== @@ -207,3 +202,8 @@ See also |Composition and Argument Binding|, |Invocation|, |Placeholders|, |lambda|, |quote|, |protect|, |apply|, |apply_wrap| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/bitand_.rst b/doc/src/refmanual/bitand_.rst index 195f0dd..f997777 100644 --- a/doc/src/refmanual/bitand_.rst +++ b/doc/src/refmanual/bitand_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Bitwise Operations//bitand_ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - bitand\_ ======== @@ -131,3 +126,8 @@ See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |bitor_|, |bitxor_|, |shift_left| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/bitor_.rst b/doc/src/refmanual/bitor_.rst index e3d2185..e6c14d8 100644 --- a/doc/src/refmanual/bitor_.rst +++ b/doc/src/refmanual/bitor_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Bitwise Operations//bitor_ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - bitor\_ ======= @@ -131,3 +126,8 @@ See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |bitand_|, |bitxor_|, |shift_left| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/bitxor_.rst b/doc/src/refmanual/bitxor_.rst index 9a30a8f..8e353b1 100644 --- a/doc/src/refmanual/bitxor_.rst +++ b/doc/src/refmanual/bitxor_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Bitwise Operations//bitxor_ -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - bitxor\_ ======== @@ -132,3 +127,8 @@ See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |bitand_|, |bitor_|, |shift_left| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/bool_.rst b/doc/src/refmanual/bool_.rst index bbe12fe..59e05cd 100644 --- a/doc/src/refmanual/bool_.rst +++ b/doc/src/refmanual/bool_.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//bool_ |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - bool\_ ====== @@ -93,3 +88,8 @@ See also .. |false_| replace:: `false_`_ .. _`false_`: `bool_`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/c_str.rst b/doc/src/refmanual/c_str.rst index 8f0ea4e..888156d 100644 --- a/doc/src/refmanual/c_str.rst +++ b/doc/src/refmanual/c_str.rst @@ -1,9 +1,5 @@ .. Metafunctions/String Operations//c_str |10 -.. Copyright Eric Niebler 2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) c_str ===== @@ -106,3 +102,8 @@ See also -------- |Forward Sequence|, |Integral Constant|, |string| + + +.. copyright:: Copyright © 2009 Eric Niebler + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/char_.rst b/doc/src/refmanual/char_.rst index c74b334..3c4da1a 100644 --- a/doc/src/refmanual/char_.rst +++ b/doc/src/refmanual/char_.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//char_ |60 -.. Copyright Eric Niebler 2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - char\_ ====== @@ -87,3 +82,7 @@ See also |Data Types|, |Integral Constant|, |int_|, |size_t|, |integral_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/clear.rst b/doc/src/refmanual/clear.rst index eebd54b..cc913b2 100644 --- a/doc/src/refmanual/clear.rst +++ b/doc/src/refmanual/clear.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//clear -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - clear ===== @@ -101,3 +96,7 @@ See also |Extensible Sequence|, |Extensible Associative Sequence|, |erase|, |empty|, |begin|, |end| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/contains.rst b/doc/src/refmanual/contains.rst index 01d2ab8..37f3f97 100644 --- a/doc/src/refmanual/contains.rst +++ b/doc/src/refmanual/contains.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//contains |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - contains ======== @@ -95,3 +90,8 @@ See also -------- |Querying Algorithms|, |find|, |find_if|, |count|, |lower_bound| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/copy.rst b/doc/src/refmanual/copy.rst index bb7402e..0ab2d6e 100644 --- a/doc/src/refmanual/copy.rst +++ b/doc/src/refmanual/copy.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//copy |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - copy ==== @@ -106,3 +101,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_copy|, |copy_if|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/copy_if.rst b/doc/src/refmanual/copy_if.rst index 0964254..0c7b699 100644 --- a/doc/src/refmanual/copy_if.rst +++ b/doc/src/refmanual/copy_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//copy_if |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - copy_if ======= @@ -123,3 +118,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_copy_if|, |copy|, |remove_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/count.rst b/doc/src/refmanual/count.rst index fdd8866..9f00ce8 100644 --- a/doc/src/refmanual/count.rst +++ b/doc/src/refmanual/count.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//count |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - count ===== @@ -93,3 +88,8 @@ See also -------- |Querying Algorithms|, |count_if|, |find|, |find_if|, |contains|, |lower_bound| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/count_if.rst b/doc/src/refmanual/count_if.rst index 50ece13..9de9b89 100644 --- a/doc/src/refmanual/count_if.rst +++ b/doc/src/refmanual/count_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//count_if |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - count_if ======== @@ -99,3 +94,8 @@ See also -------- |Querying Algorithms|, |count|, |find|, |find_if|, |contains| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/deque.rst b/doc/src/refmanual/deque.rst index 55c7d8f..04b1dfb 100644 --- a/doc/src/refmanual/deque.rst +++ b/doc/src/refmanual/deque.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//deque |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - deque ===== @@ -58,3 +53,8 @@ See also -------- |Sequences|, |vector|, |list|, |set| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/deref.rst b/doc/src/refmanual/deref.rst index 1801438..ae6276b 100644 --- a/doc/src/refmanual/deref.rst +++ b/doc/src/refmanual/deref.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//deref |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - deref ===== @@ -97,3 +92,8 @@ See also -------- |Iterators|, |begin| / |end|, |next| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/distance.rst b/doc/src/refmanual/distance.rst index 3b6c48b..e64f96f 100644 --- a/doc/src/refmanual/distance.rst +++ b/doc/src/refmanual/distance.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//distance |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - distance ======== @@ -110,3 +105,8 @@ See also -------- |Iterators|, |Tag Dispatched Metafunction|, |advance|, |next|, |prior| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/divides.rst b/doc/src/refmanual/divides.rst index 92eb250..028c7ef 100644 --- a/doc/src/refmanual/divides.rst +++ b/doc/src/refmanual/divides.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//divides |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - divides ======= @@ -128,3 +123,8 @@ See also -------- |Arithmetic Operations|, |Numeric Metafunction|, |numeric_cast|, |times|, |modulus|, |plus| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/empty.rst b/doc/src/refmanual/empty.rst index c8e78d0..b59427f 100644 --- a/doc/src/refmanual/empty.rst +++ b/doc/src/refmanual/empty.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//empty -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - empty ===== @@ -97,3 +92,8 @@ See also -------- |Forward Sequence|, |Integral Constant|, |size|, |begin| / |end| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/empty_base.rst b/doc/src/refmanual/empty_base.rst index eee82b5..476f443 100644 --- a/doc/src/refmanual/empty_base.rst +++ b/doc/src/refmanual/empty_base.rst @@ -1,10 +1,5 @@ .. Data Types/Miscellaneous//empty_base |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - empty_base ========== @@ -35,3 +30,8 @@ See also -------- |Data Types|, |inherit|, |inherit_linearly|, |void_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/empty_sequence.rst b/doc/src/refmanual/empty_sequence.rst index a0afeb6..ce90549 100644 --- a/doc/src/refmanual/empty_sequence.rst +++ b/doc/src/refmanual/empty_sequence.rst @@ -1,10 +1,5 @@ .. Sequences/Views//empty_sequence -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - empty_sequence ============== @@ -73,3 +68,8 @@ See also -------- |Sequences|, |Views|, |vector|, |list|, |single_view| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/end.rst b/doc/src/refmanual/end.rst index 33a8775..f4d7e8f 100644 --- a/doc/src/refmanual/end.rst +++ b/doc/src/refmanual/end.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//end -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - end === @@ -97,3 +92,8 @@ See also -------- |Iterators|, |Forward Sequence|, |begin|, |end|, |next| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/equal.rst b/doc/src/refmanual/equal.rst index 6851dd8..5839a43 100644 --- a/doc/src/refmanual/equal.rst +++ b/doc/src/refmanual/equal.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//equal |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - equal ===== @@ -96,3 +91,8 @@ See also -------- |Querying Algorithms|, |find|, |find_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/equal_to.rst b/doc/src/refmanual/equal_to.rst index 3482564..5488e2a 100644 --- a/doc/src/refmanual/equal_to.rst +++ b/doc/src/refmanual/equal_to.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//equal_to |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - equal_to ======== @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |not_equal_to|, |less| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/erase.rst b/doc/src/refmanual/erase.rst index cf1f215..c9b5a3d 100644 --- a/doc/src/refmanual/erase.rst +++ b/doc/src/refmanual/erase.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//erase -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - erase ===== @@ -168,3 +163,8 @@ See also -------- |Extensible Sequence|, |Extensible Associative Sequence|, |erase_key|, |pop_front|, |pop_back|, |insert| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/erase_key.rst b/doc/src/refmanual/erase_key.rst index 178d767..d352df8 100644 --- a/doc/src/refmanual/erase_key.rst +++ b/doc/src/refmanual/erase_key.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//erase_key -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - erase_key ========= @@ -101,3 +96,8 @@ See also -------- |Extensible Associative Sequence|, |erase|, |has_key|, |insert| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/eval_if.rst b/doc/src/refmanual/eval_if.rst index efd35dc..f3413d9 100644 --- a/doc/src/refmanual/eval_if.rst +++ b/doc/src/refmanual/eval_if.rst @@ -1,10 +1,5 @@ .. Metafunctions/Type Selection//eval_if |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - eval_if ======= @@ -86,3 +81,8 @@ See also -------- |Metafunctions|, |Integral Constant|, |eval_if_c|, |if_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/eval_if_c.rst b/doc/src/refmanual/eval_if_c.rst index bf82b3b..eaa399d 100644 --- a/doc/src/refmanual/eval_if_c.rst +++ b/doc/src/refmanual/eval_if_c.rst @@ -1,10 +1,5 @@ .. Metafunctions/Type Selection//eval_if_c |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - eval_if_c ========= @@ -86,3 +81,8 @@ See also -------- |Metafunctions|, |Integral Constant|, |eval_if|, |if_|, |bool_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/filter_view.rst b/doc/src/refmanual/filter_view.rst index fcf0d52..60fb07a 100644 --- a/doc/src/refmanual/filter_view.rst +++ b/doc/src/refmanual/filter_view.rst @@ -1,10 +1,5 @@ .. Sequences/Views//filter_view -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - filter_view =========== @@ -99,3 +94,8 @@ See also -------- |Sequences|, |Views|, |transform_view|, |joint_view|, |zip_view|, |iterator_range| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/find.rst b/doc/src/refmanual/find.rst index 4f9cf30..1b18a48 100644 --- a/doc/src/refmanual/find.rst +++ b/doc/src/refmanual/find.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//find |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - find ==== @@ -95,3 +90,8 @@ See also -------- |Querying Algorithms|, |contains|, |find_if|, |count|, |lower_bound| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/find_if.rst b/doc/src/refmanual/find_if.rst index 63e66f9..4fca6e1 100644 --- a/doc/src/refmanual/find_if.rst +++ b/doc/src/refmanual/find_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//find_if |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - find_if ======= @@ -97,3 +92,8 @@ See also -------- |Querying Algorithms|, |find|, |count_if|, |lower_bound| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/fold.rst b/doc/src/refmanual/fold.rst index a51319e..ebdb913 100644 --- a/doc/src/refmanual/fold.rst +++ b/doc/src/refmanual/fold.rst @@ -1,10 +1,5 @@ .. Algorithms/Iteration Algorithms//fold -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - fold ==== @@ -107,3 +102,8 @@ See also -------- |Algorithms|, |accumulate|, |reverse_fold|, |iter_fold|, |reverse_iter_fold|, |copy|, |copy_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/for_each.rst b/doc/src/refmanual/for_each.rst index 2b652d6..f2fce9c 100644 --- a/doc/src/refmanual/for_each.rst +++ b/doc/src/refmanual/for_each.rst @@ -1,10 +1,5 @@ .. Algorithms/Runtime Algorithms//for_each |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - for_each ======== @@ -143,3 +138,8 @@ See also .. |unary function object| replace:: `unary function object `__ .. |value_initialized| replace:: `value_initialized `__ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/front.rst b/doc/src/refmanual/front.rst index c22759a..d0001e6 100644 --- a/doc/src/refmanual/front.rst +++ b/doc/src/refmanual/front.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//front -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - front ===== @@ -103,3 +98,8 @@ See also -------- |Forward Sequence|, |back|, |push_front|, |begin|, |deref|, |at| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/front_inserter.rst b/doc/src/refmanual/front_inserter.rst index 518eb10..245ca8e 100644 --- a/doc/src/refmanual/front_inserter.rst +++ b/doc/src/refmanual/front_inserter.rst @@ -1,10 +1,5 @@ .. Algorithms/Inserters//front_inserter -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - front_inserter ============== @@ -92,3 +87,8 @@ See also -------- |Algorithms|, |Inserter|, |Reversible Algorithm|, |[inserter]|, |back_inserter|, |push_front| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/greater.rst b/doc/src/refmanual/greater.rst index 10188cf..4e991d1 100644 --- a/doc/src/refmanual/greater.rst +++ b/doc/src/refmanual/greater.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//greater |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - greater ======= @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |greater_equal|, |less|, |equal_to| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/greater_equal.rst b/doc/src/refmanual/greater_equal.rst index 3e9b084..9c1e3f5 100644 --- a/doc/src/refmanual/greater_equal.rst +++ b/doc/src/refmanual/greater_equal.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//greater_equal |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - greater_equal ============= @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |greater|, |less|, |equal_to| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/has_key.rst b/doc/src/refmanual/has_key.rst index 03a6c54..30180e0 100644 --- a/doc/src/refmanual/has_key.rst +++ b/doc/src/refmanual/has_key.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//has_key -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - has_key ======= @@ -96,3 +91,8 @@ See also -------- |Associative Sequence|, |count|, |insert|, |erase_key| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/identity.rst b/doc/src/refmanual/identity.rst index ba7b5e6..da0d5e1 100644 --- a/doc/src/refmanual/identity.rst +++ b/doc/src/refmanual/identity.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//identity |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - identity ======== @@ -96,3 +91,8 @@ See also -------- |Metafunctions|, |Placeholders|, |Trivial Metafunctions|, |always|, |apply| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/if_.rst b/doc/src/refmanual/if_.rst index f57b235..ed93dd8 100644 --- a/doc/src/refmanual/if_.rst +++ b/doc/src/refmanual/if_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Type Selection//if_ |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - if\_ ==== @@ -102,3 +97,8 @@ See also -------- |Metafunctions|, |Integral Constant|, |if_c|, |eval_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/if_c.rst b/doc/src/refmanual/if_c.rst index bb0f264..150551a 100644 --- a/doc/src/refmanual/if_c.rst +++ b/doc/src/refmanual/if_c.rst @@ -1,10 +1,5 @@ .. Metafunctions/Type Selection//if_c |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - if_c ==== @@ -103,3 +98,8 @@ See also -------- |Metafunctions|, |Integral Constant|, |if_|, |eval_if|, |bool_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/inherit.rst b/doc/src/refmanual/inherit.rst index bee2496..65145e9 100644 --- a/doc/src/refmanual/inherit.rst +++ b/doc/src/refmanual/inherit.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//inherit |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - inherit ======= @@ -200,3 +195,8 @@ See also -------- |Metafunctions|, |empty_base|, |inherit_linearly|, |identity| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/inherit_linearly.rst b/doc/src/refmanual/inherit_linearly.rst index 1fc48e0..d764bb8 100644 --- a/doc/src/refmanual/inherit_linearly.rst +++ b/doc/src/refmanual/inherit_linearly.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//inherit_linearly |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - inherit_linearly ================ @@ -134,3 +129,8 @@ See also -------- |Metafunctions|, |Algorithms|, |inherit|, |empty_base|, |fold|, |reverse_fold| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/insert.rst b/doc/src/refmanual/insert.rst index ddb6689..ae56fec 100644 --- a/doc/src/refmanual/insert.rst +++ b/doc/src/refmanual/insert.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//insert -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - insert ====== @@ -194,3 +189,8 @@ See also -------- |Extensible Sequence|, |Extensible Associative Sequence|, |insert_range|, |push_front|, |push_back|, |erase| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/insert_range.rst b/doc/src/refmanual/insert_range.rst index 62b99c6..589c162 100644 --- a/doc/src/refmanual/insert_range.rst +++ b/doc/src/refmanual/insert_range.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//insert_range -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - insert_range ============ @@ -122,3 +117,7 @@ See also |Extensible Sequence|, |insert|, |push_front|, |push_back|, |erase| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/inserter_.rst b/doc/src/refmanual/inserter_.rst index 8dcc638..7a3cb74 100644 --- a/doc/src/refmanual/inserter_.rst +++ b/doc/src/refmanual/inserter_.rst @@ -1,10 +1,5 @@ .. Algorithms/Inserters//inserter -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - .. _`inserter_`: inserter (class) @@ -100,3 +95,8 @@ See also |Algorithms|, |Inserter|, |Reversible Algorithm|, |front_inserter|, |back_inserter| .. |[inserter]| replace:: `inserter (class)`_ + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/int_.rst b/doc/src/refmanual/int_.rst index 7b1be09..53d4d67 100644 --- a/doc/src/refmanual/int_.rst +++ b/doc/src/refmanual/int_.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//int_ |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - int\_ ===== @@ -87,3 +82,7 @@ See also |Data Types|, |Integral Constant|, |long_|, |size_t|, |integral_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/integral_c.rst b/doc/src/refmanual/integral_c.rst index f829f5b..d990c46 100644 --- a/doc/src/refmanual/integral_c.rst +++ b/doc/src/refmanual/integral_c.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//integral_c |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - integral_c ========== @@ -90,3 +85,7 @@ See also |Data Types|, |Integral Constant|, |bool_|, |int_|, |long_|, |size_t| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/is_sequence.rst b/doc/src/refmanual/is_sequence.rst index 5898631..f76dfcd 100644 --- a/doc/src/refmanual/is_sequence.rst +++ b/doc/src/refmanual/is_sequence.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//is_sequence -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - is_sequence =========== @@ -97,3 +92,8 @@ See also -------- |Forward Sequence|, |begin|, |end|, |vector|, |list|, |range_c| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/iter_fold.rst b/doc/src/refmanual/iter_fold.rst index 3948209..0d86cf7 100644 --- a/doc/src/refmanual/iter_fold.rst +++ b/doc/src/refmanual/iter_fold.rst @@ -1,10 +1,5 @@ .. Algorithms/Iteration Algorithms//iter_fold -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - iter_fold ========= @@ -77,7 +72,7 @@ arbitrary type ``state``: .. parsed-literal:: - typedef begin::type i\ :sub:`1`; + typedef begin::type i\ :sub:`1`; typedef apply::type state\ :sub:`1`; typedef next::type i\ :sub:`2`; typedef apply::type state\ :sub:`2`; @@ -117,3 +112,8 @@ See also -------- |Algorithms|, |reverse_iter_fold|, |fold|, |reverse_fold|, |copy| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/iter_fold_if.rst b/doc/src/refmanual/iter_fold_if.rst index e2abb9d..7a9f1dc 100644 --- a/doc/src/refmanual/iter_fold_if.rst +++ b/doc/src/refmanual/iter_fold_if.rst @@ -1,9 +1,7 @@ .. .. Algorithms/Iteration Algorithms -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +.. UNFINISHED: Expression semantics and everything that follows + iter_fold_if ============ @@ -73,6 +71,9 @@ Parameters Expression semantics -------------------- +For any |Forward Sequence| ``s``, binary |Lambda Expression| ``op``, and an +arbitrary type ``state``: + .. parsed-literal:: @@ -128,3 +129,8 @@ See also -------- Algorithms, ``iter_fold_backward``, ``fold``, ``fold_backward``, ``copy``, ``copy_backward`` + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/iterator_category.rst b/doc/src/refmanual/iterator_category.rst index 9c865cd..509def9 100644 --- a/doc/src/refmanual/iterator_category.rst +++ b/doc/src/refmanual/iterator_category.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//iterator_category |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - iterator_category ================= @@ -113,3 +108,8 @@ See also -------- |Iterators|, |begin| / |end|, |advance|, |distance|, |next| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/iterator_range.rst b/doc/src/refmanual/iterator_range.rst index 9a318bb..0347e6d 100644 --- a/doc/src/refmanual/iterator_range.rst +++ b/doc/src/refmanual/iterator_range.rst @@ -1,10 +1,5 @@ .. Sequences/Views//iterator_range -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - iterator_range ============== @@ -96,3 +91,8 @@ See also -------- |Sequences|, |Views|, |filter_view|, |transform_view|, |joint_view|, |zip_view|, |max_element| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/joint_view.rst b/doc/src/refmanual/joint_view.rst index 3843da1..8985813 100644 --- a/doc/src/refmanual/joint_view.rst +++ b/doc/src/refmanual/joint_view.rst @@ -1,10 +1,5 @@ .. Sequences/Views//joint_view -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - joint_view ========== @@ -94,3 +89,8 @@ See also -------- |Sequences|, |Views|, |filter_view|, |transform_view|, |zip_view|, |iterator_range| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/key_type.rst b/doc/src/refmanual/key_type.rst index 860e50d..422840a 100644 --- a/doc/src/refmanual/key_type.rst +++ b/doc/src/refmanual/key_type.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//key_type -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - key_type ======== @@ -103,3 +98,8 @@ See also -------- |Associative Sequence|, |value_type|, |has_key|, |set|, |map| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/lambda.rst b/doc/src/refmanual/lambda.rst index bb44cc2..afb9f53 100644 --- a/doc/src/refmanual/lambda.rst +++ b/doc/src/refmanual/lambda.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//lambda |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - lambda ====== @@ -125,3 +120,8 @@ See also -------- |Composition and Argument Binding|, |Invocation|, |Placeholders|, |bind|, |quote|, |protect|, |apply| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/less.rst b/doc/src/refmanual/less.rst index 77b2d18..6a5ad54 100644 --- a/doc/src/refmanual/less.rst +++ b/doc/src/refmanual/less.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//less |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - less ==== @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |less_equal|, |greater|, |equal| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/less_equal.rst b/doc/src/refmanual/less_equal.rst index 28523ab..6f27cdf 100644 --- a/doc/src/refmanual/less_equal.rst +++ b/doc/src/refmanual/less_equal.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//less_equal |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - less_equal ========== @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |less|, |greater|, |equal| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/list.rst b/doc/src/refmanual/list.rst index 65e4405..abbc93a 100644 --- a/doc/src/refmanual/list.rst +++ b/doc/src/refmanual/list.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//list |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - list ==== @@ -116,3 +111,8 @@ See also -------- |Sequences|, |Variadic Sequence|, |Forward Sequence|, |Extensible Sequence|, |vector|, |list_c| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/list_c.rst b/doc/src/refmanual/list_c.rst index 1866d1c..ad84947 100644 --- a/doc/src/refmanual/list_c.rst +++ b/doc/src/refmanual/list_c.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//list_c |80 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - list_c ====== @@ -82,3 +77,8 @@ See also -------- |Sequences|, |Integral Sequence Wrapper|, |list|, |integral_c|, |vector_c|, |set_c|, |range_c| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/long_.rst b/doc/src/refmanual/long_.rst index 20cb780..1d47dc5 100644 --- a/doc/src/refmanual/long_.rst +++ b/doc/src/refmanual/long_.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//long_ |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - long\_ ====== @@ -87,3 +82,7 @@ See also |Data Types|, |Integral Constant|, |int_|, |size_t|, |integral_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/lower_bound.rst b/doc/src/refmanual/lower_bound.rst index a3b956b..e4dd410 100644 --- a/doc/src/refmanual/lower_bound.rst +++ b/doc/src/refmanual/lower_bound.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//lower_bound |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - lower_bound =========== @@ -106,3 +101,8 @@ See also -------- |Querying Algorithms|, |upper_bound|, |find|, |find_if|, |min_element| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/map.rst b/doc/src/refmanual/map.rst index d2c63eb..d6190bf 100644 --- a/doc/src/refmanual/map.rst +++ b/doc/src/refmanual/map.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//map |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - map === @@ -133,3 +128,7 @@ See also |Sequences|, |Variadic Sequence|, |Associative Sequence|, |Extensible Associative Sequence|, |set|, |vector| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/max.rst b/doc/src/refmanual/max.rst index 4a67ced..378e7ef 100644 --- a/doc/src/refmanual/max.rst +++ b/doc/src/refmanual/max.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//max |90 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - max === @@ -104,3 +99,8 @@ See also -------- |Metafunctions|, |Comparison|, |min|, |less|, |max_element| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/max_element.rst b/doc/src/refmanual/max_element.rst index bddad5e..cd9efa3 100644 --- a/doc/src/refmanual/max_element.rst +++ b/doc/src/refmanual/max_element.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//max_element |90 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - max_element =========== @@ -97,3 +92,8 @@ See also -------- |Querying Algorithms|, |min_element|, |find_if|, |upper_bound|, |find| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/min.rst b/doc/src/refmanual/min.rst index 9fb93ea..edc747a 100644 --- a/doc/src/refmanual/min.rst +++ b/doc/src/refmanual/min.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//min |80 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - min === @@ -104,3 +99,8 @@ See also -------- |Metafunctions|, |Comparison|, |max|, |less|, |min_element| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/min_element.rst b/doc/src/refmanual/min_element.rst index c2b4ae3..0b4c2ac 100644 --- a/doc/src/refmanual/min_element.rst +++ b/doc/src/refmanual/min_element.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//min_element |80 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - min_element =========== @@ -96,3 +91,8 @@ See also -------- |Querying Algorithms|, |max_element|, |find_if|, |upper_bound|, |find| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/minus.rst b/doc/src/refmanual/minus.rst index 2d3adc6..399ea30 100644 --- a/doc/src/refmanual/minus.rst +++ b/doc/src/refmanual/minus.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//minus |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - minus ===== @@ -122,3 +117,8 @@ See also -------- |Arithmetic Operations|, |Numeric Metafunction|, |numeric_cast|, |plus|, |negate|, |times| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/modulus.rst b/doc/src/refmanual/modulus.rst index d1e2689..9ed22e9 100644 --- a/doc/src/refmanual/modulus.rst +++ b/doc/src/refmanual/modulus.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//modulus |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - modulus ======= @@ -126,3 +121,7 @@ See also |Metafunctions|, |Numeric Metafunction|, |numeric_cast|, |divides|, |times|, |plus| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/multiplies.rst b/doc/src/refmanual/multiplies.rst index 2d92cf6..5206e72 100644 --- a/doc/src/refmanual/multiplies.rst +++ b/doc/src/refmanual/multiplies.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations/multiplies |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - multiplies ========== @@ -12,3 +7,7 @@ multiplies ``multiplies`` is a synonym for |times|. It is Provided for backward compatibility with earlier versions of the library. See |times| for the detailed specification. + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/negate.rst b/doc/src/refmanual/negate.rst index 7b5e347..9de0312 100644 --- a/doc/src/refmanual/negate.rst +++ b/doc/src/refmanual/negate.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//negate |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - negate ====== @@ -113,3 +108,7 @@ See also |Arithmetic Operations|, |Numeric Metafunction|, |numeric_cast|, |plus|, |minus|, |times| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/next.rst b/doc/src/refmanual/next.rst index ed121e9..3ec206f 100644 --- a/doc/src/refmanual/next.rst +++ b/doc/src/refmanual/next.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//next |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - next ==== @@ -100,3 +95,8 @@ See also -------- |Iterators|, |begin| / |end|, |prior|, |deref| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/not_.rst b/doc/src/refmanual/not_.rst index d3cc7eb..514a72a 100644 --- a/doc/src/refmanual/not_.rst +++ b/doc/src/refmanual/not_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Logical Operations//not_ |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - not\_ ===== @@ -98,3 +93,7 @@ See also |Metafunctions|, |Logical Operations|, |and_|, |or_| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/not_equal_to.rst b/doc/src/refmanual/not_equal_to.rst index 4f199b9..eb14ad6 100644 --- a/doc/src/refmanual/not_equal_to.rst +++ b/doc/src/refmanual/not_equal_to.rst @@ -1,10 +1,5 @@ .. Metafunctions/Comparisons//not_equal_to |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - not_equal_to ============ @@ -117,3 +112,7 @@ See also |Comparisons|, |Numeric Metafunction|, |numeric_cast|, |equal_to|, |less| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/numeric_cast.rst b/doc/src/refmanual/numeric_cast.rst index 5b6065f..86b8f59 100644 --- a/doc/src/refmanual/numeric_cast.rst +++ b/doc/src/refmanual/numeric_cast.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//numeric_cast |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - numeric_cast ============ @@ -131,3 +126,7 @@ See also |Metafunctions|, |Numeric Metafunction|, |plus|, |minus|, |times| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/or_.rst b/doc/src/refmanual/or_.rst index c80d0e8..57e0598 100644 --- a/doc/src/refmanual/or_.rst +++ b/doc/src/refmanual/or_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Logical Operations//or_ |20 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - or\_ ==== @@ -105,3 +100,8 @@ See also -------- |Metafunctions|, |Logical Operations|, |and_|, |not_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/order.rst b/doc/src/refmanual/order.rst index f91903d..6997478 100644 --- a/doc/src/refmanual/order.rst +++ b/doc/src/refmanual/order.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//order -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - order ===== @@ -97,3 +92,8 @@ See also -------- |Associative Sequence|, |has_key|, |count|, |map| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/pair.rst b/doc/src/refmanual/pair.rst index dc77f4c..4fcbd15 100644 --- a/doc/src/refmanual/pair.rst +++ b/doc/src/refmanual/pair.rst @@ -1,10 +1,5 @@ .. Data Types/Miscellaneous//pair |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - pair ==== @@ -69,3 +64,7 @@ See also |Data Types|, |Sequences|, |first|, |second| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/partition.rst b/doc/src/refmanual/partition.rst index f3df6ef..d4b4be0 100644 --- a/doc/src/refmanual/partition.rst +++ b/doc/src/refmanual/partition.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//partition |85 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - partition ========= @@ -116,3 +111,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_partition|, |stable_partition|, |sort| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/plus.rst b/doc/src/refmanual/plus.rst index e8ec108..af8639d 100644 --- a/doc/src/refmanual/plus.rst +++ b/doc/src/refmanual/plus.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//plus |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - plus ==== @@ -125,3 +120,8 @@ See also -------- |Arithmetic Operations|, |Numeric Metafunction|, |numeric_cast|, |minus|, |negate|, |times| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/pop_back.rst b/doc/src/refmanual/pop_back.rst index d5709b7..142d54c 100644 --- a/doc/src/refmanual/pop_back.rst +++ b/doc/src/refmanual/pop_back.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//pop_back -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - pop_back ======== @@ -107,3 +102,7 @@ See also |Back Extensible Sequence|, |erase|, |push_back|, |back|, |pop_front| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/pop_front.rst b/doc/src/refmanual/pop_front.rst index 16d3ab2..4e6da94 100644 --- a/doc/src/refmanual/pop_front.rst +++ b/doc/src/refmanual/pop_front.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//pop_front -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - pop_front ========= @@ -109,3 +104,7 @@ See also |Front Extensible Sequence|, |erase|, |push_front|, |front|, |pop_back| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/preface.rst b/doc/src/refmanual/preface.rst deleted file mode 100644 index b0ffbea..0000000 --- a/doc/src/refmanual/preface.rst +++ /dev/null @@ -1,19 +0,0 @@ - - -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -* use of "returns" -* [Metafunction Class] form ('f<>') -* nested 'algo' namespace??? it becomes a problem as soon as users would - want to specialize 'advance'/'distance' - -* 'outer' scope construct for lambda -* 'scope/fun/func' -* iterators not requiring nested members; what about '::type', though? -* We don't dispatch _every_ metafunction through the tag mechanism, - only algorithms. I am ambivalent whether we should, and if so, - how it should be done. - -* 'drop_front'? \ No newline at end of file diff --git a/doc/src/refmanual/prior.rst b/doc/src/refmanual/prior.rst index 7c12471..80f1867 100644 --- a/doc/src/refmanual/prior.rst +++ b/doc/src/refmanual/prior.rst @@ -1,10 +1,5 @@ .. Iterators/Iterator Metafunctions//prior |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - prior ===== @@ -100,3 +95,8 @@ See also -------- |Iterators|, |begin| / |end|, |next|, |deref| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/protect.rst b/doc/src/refmanual/protect.rst index 1ec7c18..cf4f967 100644 --- a/doc/src/refmanual/protect.rst +++ b/doc/src/refmanual/protect.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//protect |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - protect ======= @@ -111,3 +106,8 @@ See also -------- |Composition and Argument Binding|, |Invocation|, |bind|, |quote|, |apply_wrap| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/push_back.rst b/doc/src/refmanual/push_back.rst index 2ba2d11..a834e06 100644 --- a/doc/src/refmanual/push_back.rst +++ b/doc/src/refmanual/push_back.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//push_back -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - push_back ========= @@ -113,3 +108,7 @@ See also |Back Extensible Sequence|, |insert|, |pop_back|, |back|, |push_front| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/push_front.rst b/doc/src/refmanual/push_front.rst index 43a756b..a5bd40d 100644 --- a/doc/src/refmanual/push_front.rst +++ b/doc/src/refmanual/push_front.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//push_front -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - push_front ========== @@ -113,3 +108,8 @@ See also -------- |Front Extensible Sequence|, |insert|, |pop_front|, |front|, |push_back| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/quote.rst b/doc/src/refmanual/quote.rst index 48a8397..bad214a 100644 --- a/doc/src/refmanual/quote.rst +++ b/doc/src/refmanual/quote.rst @@ -1,10 +1,5 @@ .. Metafunctions/Composition and Argument Binding//quote |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - quote ===== @@ -140,3 +135,8 @@ See also -------- |Composition and Argument Binding|, |Invocation|, |bind|, |lambda|, |protect|, |apply| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/range_c.rst b/doc/src/refmanual/range_c.rst index 0f8b974..3892609 100644 --- a/doc/src/refmanual/range_c.rst +++ b/doc/src/refmanual/range_c.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//range_c |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - range_c ======= @@ -120,3 +115,8 @@ See also -------- |Sequences|, |Random Access Sequence|, |vector_c|, |set_c|, |list_c| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/refmanual.py b/doc/src/refmanual/refmanual.py index 1879e19..cda0c22 100644 --- a/doc/src/refmanual/refmanual.py +++ b/doc/src/refmanual/refmanual.py @@ -4,10 +4,9 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -import time import fnmatch -import os.path import os +import sys import re import string @@ -30,8 +29,8 @@ def __section_intro(section): return '%s.rst' % '-'.join( [x.split(' ')[0] for x in parts] ) -def __include_page( output, page, name = None ): - output.write( '.. include:: %s\n' % page ) +def __include_page( output, src_dir, page, name = None ): + output.write( '.. include:: %s\n' % os.path.join( src_dir, page ) ) # output.write( '.. raw:: LaTeX\n\n' ) # output.write( ' \\newpage\n\n') @@ -47,8 +46,6 @@ def __include_page( output, page, name = None ): ref = ' '.join( filter( lambda x: len( x.strip() ) > 0, re.split( '([A-Z][a-z]+)', ref ) ) ) output.write( '.. |%(ref)s| replace:: `%(ref)s`_\n' % { 'ref': ref } ) - modtime = time.gmtime( os.stat( page ).st_mtime ) - output.write( '.. modtime: %s\n' % time.strftime( '%B %d, %Y %H:%M:%S +0000', modtime ) ) output.write( '\n' ) @@ -61,24 +58,24 @@ def __write_index( filename, index ): index_file.close() -def main( filename, dir ): +def main( filename, src_dir, build_dir ): sources = filter( lambda x: fnmatch.fnmatch(x,"*.rst") and x != filename - , os.listdir(dir) + , os.listdir( src_dir ) ) - toc = [t.strip() for t in open('%s.toc' % filename).readlines()] + toc = [ t.strip() for t in open( os.path.join( src_dir, '%s.toc' % filename) ).readlines() ] topics = {} for t in toc: topics[t] = [] concept_index = [] index = [] - output = open('%s.gen' % filename, 'w') - output.writelines( open( '%s.rst' % filename, 'r' ).readlines() ) + output = open( os.path.join( build_dir, '%s.gen' % filename ), 'w') + output.writelines( open( os.path.join( src_dir, '%s.rst' % filename ), 'r' ).readlines() ) re_topic = re.compile(r'^..\s+(.+?)//(.+?)(\s*\|\s*(\d+))?\s*$') for src in sources: - placement_spec = open(src, 'r').readline() + placement_spec = open( os.path.join( src_dir, src ), 'r' ).readline() topic = 'Unclassified' name = None @@ -109,18 +106,18 @@ def main( filename, dir ): output.write( __section_header(t) ) - intro = __section_intro(t) - if os.path.exists(intro): - __include_page( output, intro ) + intro = __section_intro( t ) + if os.path.exists( os.path.join( src_dir, intro ) ): + __include_page( output, src_dir, intro ) for src in content: - __include_page( output, src[0], src[2] ) + __include_page( output, src_dir, src[0], src[2] ) output.close() - __write_index( 'concepts.gen', concept_index ) - __write_index( 'index.gen', index ) + __write_index( os.path.join( build_dir, 'concepts.gen' ), concept_index ) + __write_index( os.path.join( build_dir, 'index.gen' ), index ) -main( 'refmanual', os.getcwd() ) +main( 'refmanual', os.path.dirname( __file__ ), sys.argv[1] ) diff --git a/doc/src/refmanual/refmanual.rst b/doc/src/refmanual/refmanual.rst index 90497a0..44cb01a 100644 --- a/doc/src/refmanual/refmanual.rst +++ b/doc/src/refmanual/refmanual.rst @@ -1,34 +1,29 @@ -.. Copyright Aleksey Gurtovoy, David Abrahams 2001-2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - The MPL Reference Manual ************************ -:Copyright: Copyright © Aleksey Gurtovoy and David Abrahams, 2001-2009. +:Copyright: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams :License: Distributed under the Boost Software License, Version 1.0. (See accompanying file ``LICENSE_1_0.txt`` or copy at - `http://www.boost.org/LICENSE_1_0.txt`__) - - -__ http://www.boost.org/LICENSE_1_0.txt - - - -.. no .. section-numbering:: + http://www.boost.org/LICENSE_1_0.txt) .. raw:: latex \setcounter{secnumdepth}{2} \setcounter{tocdepth}{2} + + +.. TOC copyright: +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) .. contents:: Table of Contents :depth: 3 + .. |Boost.Bind| replace:: `Boost.Bind `__ .. |Boost.Lambda| replace:: `Boost.Lambda `__ diff --git a/doc/src/refmanual/refmanual.toc b/doc/src/refmanual/refmanual.toc index 93b115a..43382fb 100644 --- a/doc/src/refmanual/refmanual.toc +++ b/doc/src/refmanual/refmanual.toc @@ -36,4 +36,6 @@ Macros/Configuration Macros/Broken Compiler Workarounds Terminology Categorized Index +Categorized Index/Concepts +Categorized Index/Components Acknowledgements diff --git a/doc/src/refmanual/remove.rst b/doc/src/refmanual/remove.rst index b571bc8..ac87856 100644 --- a/doc/src/refmanual/remove.rst +++ b/doc/src/refmanual/remove.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//remove |60 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - remove ====== @@ -109,3 +104,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_remove|, |remove_if|, |copy|, |replace| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/remove_if.rst b/doc/src/refmanual/remove_if.rst index 904ff62..f7360b8 100644 --- a/doc/src/refmanual/remove_if.rst +++ b/doc/src/refmanual/remove_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//remove_if |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - remove_if ========= @@ -120,3 +115,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_remove_if|, |remove|, |copy_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/replace.rst b/doc/src/refmanual/replace.rst index 310845b..3ea1997 100644 --- a/doc/src/refmanual/replace.rst +++ b/doc/src/refmanual/replace.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//replace |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - replace ======= @@ -110,3 +105,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_replace|, |replace_if|, |remove|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/replace_if.rst b/doc/src/refmanual/replace_if.rst index e00e5b6..296146c 100644 --- a/doc/src/refmanual/replace_if.rst +++ b/doc/src/refmanual/replace_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//replace_if |50 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - replace_if ========== @@ -113,3 +108,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_replace_if|, |replace|, |remove_if|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse.rst b/doc/src/refmanual/reverse.rst index 8cef911..04bb34b 100644 --- a/doc/src/refmanual/reverse.rst +++ b/doc/src/refmanual/reverse.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse ======= @@ -93,3 +88,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_copy|, |copy|, |copy_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_copy.rst b/doc/src/refmanual/reverse_copy.rst index c6287e0..167ab28 100644 --- a/doc/src/refmanual/reverse_copy.rst +++ b/doc/src/refmanual/reverse_copy.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_copy |110 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_copy ============ @@ -105,3 +100,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |copy|, |reverse_copy_if|, |reverse_transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_copy_if.rst b/doc/src/refmanual/reverse_copy_if.rst index 94cdea5..7a3d063 100644 --- a/doc/src/refmanual/reverse_copy_if.rst +++ b/doc/src/refmanual/reverse_copy_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_copy_if |120 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_copy_if =============== @@ -123,3 +118,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |copy_if|, |reverse_copy|, |remove_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_fold.rst b/doc/src/refmanual/reverse_fold.rst index 20b3b96..58564ff 100644 --- a/doc/src/refmanual/reverse_fold.rst +++ b/doc/src/refmanual/reverse_fold.rst @@ -1,10 +1,5 @@ .. Algorithms/Iteration Algorithms//reverse_fold -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_fold ============ @@ -148,3 +143,7 @@ See also |Algorithms|, |fold|, |reverse_iter_fold|, |iter_fold| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_iter_fold.rst b/doc/src/refmanual/reverse_iter_fold.rst index b2c99c7..44ffafd 100644 --- a/doc/src/refmanual/reverse_iter_fold.rst +++ b/doc/src/refmanual/reverse_iter_fold.rst @@ -1,10 +1,5 @@ .. Algorithms/Iteration Algorithms//reverse_iter_fold -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_iter_fold ================= @@ -150,3 +145,8 @@ See also -------- |Algorithms|, |iter_fold|, |reverse_fold|, |fold| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_partition.rst b/doc/src/refmanual/reverse_partition.rst index ab29d94..a535996 100644 --- a/doc/src/refmanual/reverse_partition.rst +++ b/doc/src/refmanual/reverse_partition.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_partition |185 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_partition ================= @@ -116,3 +111,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |partition|, |reverse_stable_partition|, |sort| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_remove.rst b/doc/src/refmanual/reverse_remove.rst index 518efb3..b5bf47b 100644 --- a/doc/src/refmanual/reverse_remove.rst +++ b/doc/src/refmanual/reverse_remove.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_remove |160 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_remove ============== @@ -108,3 +103,8 @@ See also |Transformation Algorithms|, |Reversible Algorithm|, |remove|, |reverse_remove_if|, |reverse_copy|, |transform|, |replace| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_remove_if.rst b/doc/src/refmanual/reverse_remove_if.rst index 990e833..fd72c33 100644 --- a/doc/src/refmanual/reverse_remove_if.rst +++ b/doc/src/refmanual/reverse_remove_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_remove_if |170 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_remove_if ================= @@ -118,3 +113,8 @@ See also |Transformation Algorithms|, |Reversible Algorithm|, |remove_if|, |reverse_remove|, |reverse_copy_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_replace.rst b/doc/src/refmanual/reverse_replace.rst index 285058e..9e837c4 100644 --- a/doc/src/refmanual/reverse_replace.rst +++ b/doc/src/refmanual/reverse_replace.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_replace |140 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_replace =============== @@ -110,3 +105,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |replace|, |reverse_replace_if|, |remove|, |reverse_transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_replace_if.rst b/doc/src/refmanual/reverse_replace_if.rst index 570f564..1b35a73 100644 --- a/doc/src/refmanual/reverse_replace_if.rst +++ b/doc/src/refmanual/reverse_replace_if.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_replace_if |150 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_replace_if ================== @@ -118,3 +113,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |replace_if|, |reverse_replace|, |remove_if|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_stable_partition.rst b/doc/src/refmanual/reverse_stable_partition.rst index 8fa7fe8..6b1758f 100644 --- a/doc/src/refmanual/reverse_stable_partition.rst +++ b/doc/src/refmanual/reverse_stable_partition.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_stable_partition |190 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_stable_partition ======================== @@ -130,3 +125,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |stable_partition|, |reverse_partition|, |sort|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_transform.rst b/doc/src/refmanual/reverse_transform.rst index da0d339..bbd8380 100644 --- a/doc/src/refmanual/reverse_transform.rst +++ b/doc/src/refmanual/reverse_transform.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_transform |130 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_transform ================= @@ -161,3 +156,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |transform|, |reverse_copy|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/reverse_unique.rst b/doc/src/refmanual/reverse_unique.rst index 4c2425d..1578bed 100644 --- a/doc/src/refmanual/reverse_unique.rst +++ b/doc/src/refmanual/reverse_unique.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//reverse_unique |180 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - reverse_unique ============== @@ -130,3 +125,8 @@ See also |Transformation Algorithms|, |Reversible Algorithm|, |unique|, |reverse_remove|, |reverse_copy_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/sequence_tag.rst b/doc/src/refmanual/sequence_tag.rst index f37800a..65c2084 100644 --- a/doc/src/refmanual/sequence_tag.rst +++ b/doc/src/refmanual/sequence_tag.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//sequence_tag -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - sequence_tag ============ @@ -77,3 +72,8 @@ See also -------- `Intrinsic Metafunctions`_, |Tag Dispatched Metafunction| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/set.rst b/doc/src/refmanual/set.rst index 8142883..6d74b82 100644 --- a/doc/src/refmanual/set.rst +++ b/doc/src/refmanual/set.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//set |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - set === @@ -128,3 +123,7 @@ See also |Sequences|, |Variadic Sequence|, |Associative Sequence|, |Extensible Associative Sequence|, |set_c|, |map|, |vector| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/set_c.rst b/doc/src/refmanual/set_c.rst index c99f952..d0bc436 100644 --- a/doc/src/refmanual/set_c.rst +++ b/doc/src/refmanual/set_c.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//set_c |90 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - set_c ===== @@ -85,3 +80,7 @@ See also |Sequences|, |Integral Sequence Wrapper|, |set|, |integral_c|, |vector_c|, |list_c|, |range_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/shift_left.rst b/doc/src/refmanual/shift_left.rst index 3352ef9..d93182e 100644 --- a/doc/src/refmanual/shift_left.rst +++ b/doc/src/refmanual/shift_left.rst @@ -1,10 +1,5 @@ .. Metafunctions/Bitwise Operations//shift_left -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - shift_left ========== @@ -126,3 +121,8 @@ See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |shift_right|, |bitand_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/shift_right.rst b/doc/src/refmanual/shift_right.rst index 6178542..ce4857e 100644 --- a/doc/src/refmanual/shift_right.rst +++ b/doc/src/refmanual/shift_right.rst @@ -1,10 +1,5 @@ .. Metafunctions/Bitwise Operations//shift_right -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - shift_right =========== @@ -126,3 +121,8 @@ See also -------- |Bitwise Operations|, |Numeric Metafunction|, |numeric_cast|, |shift_left|, |bitand_| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/single_view.rst b/doc/src/refmanual/single_view.rst index 8a0314d..af53bf6 100644 --- a/doc/src/refmanual/single_view.rst +++ b/doc/src/refmanual/single_view.rst @@ -1,10 +1,5 @@ .. Sequences/Views//single_view -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - single_view =========== @@ -93,3 +88,8 @@ See also -------- |Sequences|, |Views|, |iterator_range|, |filter_view|, |transform_view|, |joint_view|, |zip_view| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/size.rst b/doc/src/refmanual/size.rst index 10cc4ef..178b146 100644 --- a/doc/src/refmanual/size.rst +++ b/doc/src/refmanual/size.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//size -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - size ==== @@ -112,3 +107,8 @@ See also -------- |Forward Sequence|, |Random Access Sequence|, |empty|, |begin|, |end|, |distance| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/size_t.rst b/doc/src/refmanual/size_t.rst index 3f6795d..c5bb805 100644 --- a/doc/src/refmanual/size_t.rst +++ b/doc/src/refmanual/size_t.rst @@ -1,10 +1,5 @@ .. Data Types/Numeric//size_t |40 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - size_t ====== @@ -87,3 +82,7 @@ See also |Data Types|, |Integral Constant|, |int_|, |long_|, |integral_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/sizeof_.rst b/doc/src/refmanual/sizeof_.rst index 48d3478..4ee31fa 100644 --- a/doc/src/refmanual/sizeof_.rst +++ b/doc/src/refmanual/sizeof_.rst @@ -1,10 +1,5 @@ .. Metafunctions/Miscellaneous//sizeof_ |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - sizeof\_ ======== @@ -103,3 +98,8 @@ See also -------- |Metafunctions|, |Integral Constant|, |size_t| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/sort.rst b/doc/src/refmanual/sort.rst index 877b014..4b614e7 100644 --- a/doc/src/refmanual/sort.rst +++ b/doc/src/refmanual/sort.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//sort |95 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - sort ==== @@ -133,3 +128,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |partition| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/stable_partition.rst b/doc/src/refmanual/stable_partition.rst index 52036bd..8525b47 100644 --- a/doc/src/refmanual/stable_partition.rst +++ b/doc/src/refmanual/stable_partition.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//stable_partition |90 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - stable_partition ================ @@ -130,3 +125,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_stable_partition|, |partition|, |sort|, |transform| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/string.rst b/doc/src/refmanual/string.rst index 7264041..a757014 100644 --- a/doc/src/refmanual/string.rst +++ b/doc/src/refmanual/string.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//string |100 -.. Copyright Eric Niebler 2009. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - string ====== @@ -133,3 +128,8 @@ See also -------- |Sequences|, |Variadic Sequence|, |Bidirectional Sequence|, |Extensible Sequence|, |Integral Sequence Wrapper|, |char_|, |c_str| + + +.. copyright:: Copyright © 2009 Eric Niebler + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/times.rst b/doc/src/refmanual/times.rst index fd983bb..45d8f3d 100644 --- a/doc/src/refmanual/times.rst +++ b/doc/src/refmanual/times.rst @@ -1,10 +1,5 @@ .. Metafunctions/Arithmetic Operations//times |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - times ===== @@ -123,3 +118,8 @@ See also -------- |Metafunctions|, |Numeric Metafunction|, |numeric_cast|, |divides|, |modulus|, |plus| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/transform.rst b/doc/src/refmanual/transform.rst index 43a7487..94ddfdf 100644 --- a/doc/src/refmanual/transform.rst +++ b/doc/src/refmanual/transform.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//transform |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - transform ========= @@ -160,3 +155,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_transform|, |copy|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/transform_view.rst b/doc/src/refmanual/transform_view.rst index 00edd59..47c241c 100644 --- a/doc/src/refmanual/transform_view.rst +++ b/doc/src/refmanual/transform_view.rst @@ -1,10 +1,5 @@ .. Sequences/Views//transform_view -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - transform_view ============== @@ -98,3 +93,7 @@ See also |Sequences|, |Views|, |filter_view|, |joint_view|, |zip_view|, |iterator_range| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/unique.rst b/doc/src/refmanual/unique.rst index 0af2428..31e7403 100644 --- a/doc/src/refmanual/unique.rst +++ b/doc/src/refmanual/unique.rst @@ -1,10 +1,5 @@ .. Algorithms/Transformation Algorithms//unique |80 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - unique ====== @@ -129,3 +124,8 @@ See also -------- |Transformation Algorithms|, |Reversible Algorithm|, |reverse_unique|, |remove|, |copy_if|, |replace_if| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/unpack_args.rst b/doc/src/refmanual/unpack_args.rst index 5c0ccd0..c993366 100644 --- a/doc/src/refmanual/unpack_args.rst +++ b/doc/src/refmanual/unpack_args.rst @@ -1,10 +1,5 @@ .. Metafunctions/Invocation//unpack_args |30 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - unpack_args =========== @@ -96,3 +91,8 @@ See also -------- |Metafunctions|, |Lambda Expression|, |Metafunction Class|, |apply|, |apply_wrap|, |bind| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/upper_bound.rst b/doc/src/refmanual/upper_bound.rst index e579a08..f15671f 100644 --- a/doc/src/refmanual/upper_bound.rst +++ b/doc/src/refmanual/upper_bound.rst @@ -1,10 +1,5 @@ .. Algorithms/Querying Algorithms//upper_bound |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - upper_bound =========== @@ -106,3 +101,8 @@ See also -------- |Querying Algorithms|, |lower_bound|, |find|, |find_if|, |min_element| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/value_type.rst b/doc/src/refmanual/value_type.rst index 58694ff..af71b81 100644 --- a/doc/src/refmanual/value_type.rst +++ b/doc/src/refmanual/value_type.rst @@ -1,10 +1,5 @@ .. Sequences/Intrinsic Metafunctions//value_type -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - value_type ========== @@ -112,3 +107,8 @@ See also -------- |Associative Sequence|, |key_type|, |at|, |set|, |map| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/vector.rst b/doc/src/refmanual/vector.rst index f4fb896..1424bcd 100644 --- a/doc/src/refmanual/vector.rst +++ b/doc/src/refmanual/vector.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//vector |10 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - vector ====== @@ -134,3 +129,7 @@ See also |Sequences|, |Variadic Sequence|, |Random Access Sequence|, |Extensible Sequence|, |vector_c|, |list| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/vector_c.rst b/doc/src/refmanual/vector_c.rst index eb33b0c..f42f80e 100644 --- a/doc/src/refmanual/vector_c.rst +++ b/doc/src/refmanual/vector_c.rst @@ -1,10 +1,5 @@ .. Sequences/Classes//vector_c |70 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - vector_c ======== @@ -85,3 +80,7 @@ See also |Sequences|, |Integral Sequence Wrapper|, |vector|, |integral_c|, |set_c|, |list_c|, |range_c| + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/void_.rst b/doc/src/refmanual/void_.rst index c8fdda7..937c738 100644 --- a/doc/src/refmanual/void_.rst +++ b/doc/src/refmanual/void_.rst @@ -1,10 +1,5 @@ .. Data Types/Miscellaneous//void_ |100 -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - void\_ ====== @@ -43,3 +38,8 @@ See also -------- |Data Types|, |pair|, |empty_base|, |bool_|, |int_|, |integral_c| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/doc/src/refmanual/zip_view.rst b/doc/src/refmanual/zip_view.rst index 18e8618..06fc61d 100644 --- a/doc/src/refmanual/zip_view.rst +++ b/doc/src/refmanual/zip_view.rst @@ -1,10 +1,5 @@ .. Sequences/Views//zip_view -.. Copyright Aleksey Gurtovoy, David Abrahams 2007. -.. Distributed under the Boost -.. Software License, Version 1.0. (See accompanying -.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - zip_view ======== @@ -108,3 +103,8 @@ See also -------- |Sequences|, |Views|, |filter_view|, |transform_view|, |joint_view|, |single_view|, |iterator_range| + + +.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) From 5442b57228030ec40435bf0d3d7c0a868791e851 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 17 Aug 2009 10:45:29 +0000 Subject: [PATCH 34/39] Assign copyright back to Eric (fixing copy & paste error in changeset 55621) [SVN r55622] --- doc/src/refmanual/char_.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/refmanual/char_.rst b/doc/src/refmanual/char_.rst index 3c4da1a..321659d 100644 --- a/doc/src/refmanual/char_.rst +++ b/doc/src/refmanual/char_.rst @@ -83,6 +83,6 @@ See also |Data Types|, |Integral Constant|, |int_|, |size_t|, |integral_c| -.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams +.. copyright:: Copyright © 2009 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) From e42394d3ecbef0ec89bceaca78968dd6d7c3cd16 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 17 Aug 2009 11:01:40 +0000 Subject: [PATCH 35/39] Assign copyright back to Eric (fixing copy & paste error in changeset 55621) [SVN r55623] --- doc/src/refmanual/LIMIT_STRING_SIZE.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/refmanual/LIMIT_STRING_SIZE.rst b/doc/src/refmanual/LIMIT_STRING_SIZE.rst index f18b2d7..9bf6b09 100644 --- a/doc/src/refmanual/LIMIT_STRING_SIZE.rst +++ b/doc/src/refmanual/LIMIT_STRING_SIZE.rst @@ -46,6 +46,6 @@ See also |Configuration|, |BOOST_MPL_LIMIT_VECTOR_SIZE| -.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams +.. copyright:: Copyright © 2009 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) From 43d395d0509c984ef49ba5d82bb553b1f0e71a19 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 17 Aug 2009 11:30:52 +0000 Subject: [PATCH 36/39] Updated MPL refmanul docs + new style [SVN r55624] --- doc/refmanual.html | 46 +- doc/refmanual/accumulate.html | 63 ++- doc/refmanual/acknowledgements.html | 16 +- doc/refmanual/advance.html | 83 ++-- doc/refmanual/algorithms-concepts.html | 19 +- doc/refmanual/algorithms.html | 62 ++- doc/refmanual/always.html | 59 ++- doc/refmanual/and.html | 69 ++- doc/refmanual/apply-wrap.html | 60 ++- doc/refmanual/apply.html | 54 +-- doc/refmanual/arg.html | 48 +- doc/refmanual/arithmetic-operations.html | 30 +- doc/refmanual/assert-msg.html | 68 +-- doc/refmanual/assert-not.html | 53 +-- doc/refmanual/assert-relation.html | 49 +- doc/refmanual/assert.html | 53 +-- doc/refmanual/asserts.html | 22 +- doc/refmanual/associative-sequence.html | 94 ++-- doc/refmanual/at-c.html | 70 +-- doc/refmanual/at.html | 95 ++-- doc/refmanual/aux-lambda-support.html | 62 ++- doc/refmanual/back-extensible-sequence.html | 64 ++- doc/refmanual/back-inserter.html | 60 ++- doc/refmanual/back.html | 58 +-- doc/refmanual/begin.html | 54 +-- doc/refmanual/bidirectional-iterator.html | 62 ++- doc/refmanual/bidirectional-sequence.html | 62 ++- doc/refmanual/bind.html | 104 ++-- doc/refmanual/bitand.html | 68 +-- doc/refmanual/bitor.html | 68 +-- doc/refmanual/bitwise-operations.html | 24 +- doc/refmanual/bitxor.html | 68 +-- doc/refmanual/bool.html | 58 ++- ....html => broken-compiler-workarounds.html} | 19 +- doc/refmanual/categorized-concepts.html | 49 -- doc/refmanual/categorized-index-concepts.html | 48 ++ doc/refmanual/categorized-index.html | 21 +- doc/refmanual/cfg-no-has-xxx.html | 32 +- ....html => cfg-no-preprocessed-headers.html} | 40 +- doc/refmanual/classes.html | 35 +- doc/refmanual/clear.html | 62 +-- doc/refmanual/comparisons.html | 26 +- doc/refmanual/components.html | 322 ++++++------- ... => composition-and-argument-binding.html} | 30 +- doc/refmanual/concepts.html | 46 +- doc/refmanual/configuration.html | 35 +- doc/refmanual/contains.html | 51 +- doc/refmanual/copy-if.html | 77 ++- doc/refmanual/copy.html | 61 ++- doc/refmanual/count-if.html | 57 ++- doc/refmanual/count.html | 47 +- doc/refmanual/data-miscellaneous.html | 30 -- ...concepts.html => data-types-concepts.html} | 19 +- doc/refmanual/data-types-miscellaneous.html | 29 ++ doc/refmanual/data-types.html | 24 +- doc/refmanual/deque.html | 46 +- doc/refmanual/deref.html | 54 +-- doc/refmanual/distance.html | 69 +-- doc/refmanual/divides.html | 74 +-- doc/refmanual/empty-base.html | 30 +- doc/refmanual/empty-sequence.html | 38 +- doc/refmanual/empty.html | 54 +-- doc/refmanual/end.html | 56 ++- doc/refmanual/equal-to.html | 68 +-- doc/refmanual/equal.html | 57 ++- doc/refmanual/erase-key.html | 56 ++- doc/refmanual/erase.html | 93 ++-- doc/refmanual/eval-if-c.html | 48 +- doc/refmanual/eval-if.html | 54 +-- ...l => extensible-associative-sequence.html} | 80 ++-- doc/refmanual/extensible-sequence.html | 68 ++- doc/refmanual/filter-view.html | 62 ++- doc/refmanual/find-if.html | 55 ++- doc/refmanual/find.html | 47 +- doc/refmanual/fold.html | 63 +-- doc/refmanual/for-each.html | 66 +-- doc/refmanual/forward-iterator.html | 74 ++- doc/refmanual/forward-sequence.html | 92 ++-- doc/refmanual/front-extensible-sequence.html | 64 ++- doc/refmanual/front-inserter.html | 64 ++- doc/refmanual/front.html | 56 +-- doc/refmanual/greater-equal.html | 68 +-- doc/refmanual/greater.html | 68 +-- doc/refmanual/has-key.html | 54 +-- doc/refmanual/has-xxx-trait-def.html | 68 +-- doc/refmanual/has-xxx-trait-named-def.html | 87 ++-- doc/refmanual/identity.html | 58 +-- doc/refmanual/if-c.html | 57 ++- doc/refmanual/if.html | 65 ++- doc/refmanual/inherit-linearly.html | 65 ++- doc/refmanual/inherit.html | 80 ++-- doc/refmanual/insert-range.html | 75 +-- doc/refmanual/insert.html | 109 ++--- ...ters-inserter.html => inserter-class.html} | 74 ++- doc/refmanual/inserter.html | 68 ++- doc/refmanual/inserters.html | 19 +- doc/refmanual/int.html | 52 +- doc/refmanual/integral-c.html | 57 ++- doc/refmanual/integral-constant.html | 79 +-- doc/refmanual/integral-sequence-wrapper.html | 79 ++- doc/refmanual/intrinsic-metafunctions.html | 80 ++-- doc/refmanual/introspection.html | 17 +- doc/refmanual/invocation.html | 24 +- doc/refmanual/is-sequence.html | 49 +- doc/refmanual/iter-fold.html | 65 ++- doc/refmanual/iteration-algorithms.html | 48 +- doc/refmanual/iterator-category.html | 61 +-- doc/refmanual/iterator-metafunctions.html | 28 +- doc/refmanual/iterator-range.html | 56 ++- doc/refmanual/iterators-concepts.html | 40 +- doc/refmanual/iterators.html | 26 +- doc/refmanual/joint-view.html | 60 ++- doc/refmanual/key-type.html | 56 ++- doc/refmanual/lambda-expression.html | 36 +- doc/refmanual/lambda.html | 70 +-- doc/refmanual/less-equal.html | 68 +-- doc/refmanual/less.html | 68 +-- doc/refmanual/limit-list-size.html | 34 +- doc/refmanual/limit-map-size.html | 40 +- doc/refmanual/limit-metafunction-arity.html | 44 +- doc/refmanual/limit-set-size.html | 34 +- doc/refmanual/limit-unrolling.html | 42 +- doc/refmanual/limit-vector-size.html | 34 +- doc/refmanual/list-c.html | 62 ++- doc/refmanual/list.html | 84 ++-- doc/refmanual/logical-operations.html | 20 +- doc/refmanual/long.html | 52 +- doc/refmanual/lower-bound.html | 65 ++- doc/refmanual/macros.html | 44 +- doc/refmanual/manual.png | Bin 1732 -> 0 bytes doc/refmanual/map.html | 82 ++-- doc/refmanual/max-element.html | 59 ++- doc/refmanual/max.html | 52 +- doc/refmanual/metafunction-class.html | 60 ++- doc/refmanual/metafunction.html | 76 ++- doc/refmanual/metafunctions-concepts.html | 29 +- doc/refmanual/metafunctions.html | 95 ++-- doc/refmanual/min-element.html | 57 ++- doc/refmanual/min.html | 52 +- doc/refmanual/minus.html | 68 +-- doc/refmanual/miscellaneous.html | 33 +- doc/refmanual/modulus.html | 68 +-- doc/refmanual/negate.html | 66 +-- doc/refmanual/next.html | 62 +-- doc/refmanual/not-equal-to.html | 68 +-- doc/refmanual/not.html | 56 +-- doc/refmanual/numeric-cast.html | 52 +- doc/refmanual/numeric-metafunction.html | 64 ++- doc/refmanual/numeric.html | 28 +- doc/refmanual/or.html | 69 ++- doc/refmanual/order.html | 58 ++- doc/refmanual/pair.html | 42 +- doc/refmanual/partition.html | 71 ++- doc/refmanual/placeholder-expression.html | 46 +- doc/refmanual/placeholders.html | 67 ++- doc/refmanual/plus.html | 68 +-- doc/refmanual/pop-back.html | 56 ++- doc/refmanual/pop-front.html | 56 ++- doc/refmanual/prior.html | 62 +-- doc/refmanual/protect.html | 63 ++- doc/refmanual/push-back.html | 59 ++- doc/refmanual/push-front.html | 60 +-- doc/refmanual/querying-algorithms.html | 34 +- doc/refmanual/quote.html | 63 ++- doc/refmanual/random-access-iterator.html | 60 ++- doc/refmanual/random-access-sequence.html | 66 ++- doc/refmanual/range-c.html | 60 ++- doc/refmanual/refmanual_toc.html | 448 +++++++++--------- doc/refmanual/remove-if.html | 77 ++- doc/refmanual/remove.html | 63 ++- doc/refmanual/replace-if.html | 72 +-- doc/refmanual/replace.html | 67 ++- doc/refmanual/reverse-copy-if.html | 77 ++- doc/refmanual/reverse-copy.html | 63 ++- doc/refmanual/reverse-fold.html | 89 ++-- doc/refmanual/reverse-iter-fold.html | 84 ++-- doc/refmanual/reverse-partition.html | 71 ++- doc/refmanual/reverse-remove-if.html | 77 ++- doc/refmanual/reverse-remove.html | 65 ++- doc/refmanual/reverse-replace-if.html | 73 ++- doc/refmanual/reverse-replace.html | 67 ++- doc/refmanual/reverse-stable-partition.html | 83 ++-- doc/refmanual/reverse-transform.html | 98 ++-- doc/refmanual/reverse-unique.html | 81 ++-- doc/refmanual/reverse.html | 59 ++- doc/refmanual/reversible-algorithm.html | 102 ++-- doc/refmanual/runtime-algorithms.html | 16 +- doc/refmanual/sequence-tag.html | 44 +- doc/refmanual/sequences.html | 36 +- doc/refmanual/set-c.html | 63 ++- doc/refmanual/set.html | 82 ++-- doc/refmanual/shift-left.html | 70 +-- doc/refmanual/shift-right.html | 70 +-- doc/refmanual/single-view.html | 52 +- doc/refmanual/size-t.html | 52 +- doc/refmanual/size.html | 70 +-- doc/refmanual/sizeof.html | 56 +-- doc/refmanual/sort.html | 69 ++- doc/refmanual/stable-partition.html | 79 ++- ....html => tag-dispatched-metafunction.html} | 74 ++- doc/refmanual/terminology.html | 38 +- doc/refmanual/times.html | 68 +-- doc/refmanual/transform-view.html | 60 ++- doc/refmanual/transform.html | 102 ++-- doc/refmanual/transformation-algorithms.html | 80 ++-- doc/refmanual/trivial-metafunction.html | 52 +- .../trivial-metafunctions-summary.html | 50 ++ doc/refmanual/trivial-metafunctions.html | 52 -- doc/refmanual/trivial.html | 28 +- doc/refmanual/type-selection.html | 22 +- doc/refmanual/unique.html | 79 ++- doc/refmanual/unpack-args.html | 65 ++- doc/refmanual/upper-bound.html | 65 ++- doc/refmanual/value-type.html | 65 +-- doc/refmanual/variadic-sequence.html | 75 ++- doc/refmanual/vector-c.html | 70 ++- doc/refmanual/vector.html | 96 ++-- doc/refmanual/views.html | 44 +- doc/refmanual/void.html | 36 +- doc/refmanual/zip-view.html | 70 ++- doc/style.css | 49 +- 221 files changed, 6646 insertions(+), 6818 deletions(-) rename doc/refmanual/{broken-compiler.html => broken-compiler-workarounds.html} (73%) delete mode 100644 doc/refmanual/categorized-concepts.html create mode 100644 doc/refmanual/categorized-index-concepts.html rename doc/refmanual/{cfg-no-preprocessed.html => cfg-no-preprocessed-headers.html} (64%) rename doc/refmanual/{composition-and-argument.html => composition-and-argument-binding.html} (64%) delete mode 100644 doc/refmanual/data-miscellaneous.html rename doc/refmanual/{data-concepts.html => data-types-concepts.html} (73%) create mode 100644 doc/refmanual/data-types-miscellaneous.html rename doc/refmanual/{extensible-associative.html => extensible-associative-sequence.html} (67%) rename doc/refmanual/{inserters-inserter.html => inserter-class.html} (62%) delete mode 100644 doc/refmanual/manual.png rename doc/refmanual/{tag-dispatched.html => tag-dispatched-metafunction.html} (74%) create mode 100644 doc/refmanual/trivial-metafunctions-summary.html delete mode 100644 doc/refmanual/trivial-metafunctions.html diff --git a/doc/refmanual.html b/doc/refmanual.html index 313cf6d..4c36069 100644 --- a/doc/refmanual.html +++ b/doc/refmanual.html @@ -1,52 +1,50 @@ - - - - + The MPL Reference Manual - + +

The MPL Reference Manual

- - + +
Copyright:Copyright © Aleksey Gurtovoy and David Abrahams, 2001-2005.
License:Distributed under the Boost Software License, Version 1.0. (See -accompanying file LICENSE_1_0.txt or copy at -http://www.boost.org/LICENSE_1_0.txt)Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
License:Distributed under the Boost Software License, Version 1.0. (See +accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt)
- - diff --git a/doc/refmanual/accumulate.html b/doc/refmanual/accumulate.html index 3e83a14..f1667c1 100644 --- a/doc/refmanual/accumulate.html +++ b/doc/refmanual/accumulate.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: accumulate @@ -15,8 +12,8 @@ Front Page / Algorithms / Iteration Algorithms / accumulate
-

accumulate

-
+

accumulate

+

Synopsis

 template<
@@ -30,36 +27,36 @@ struct accumulate
 };
 
-
+

Description

-

Returns the result of the successive application of binary ForwardOp to the -result of the previous ForwardOp invocation (State if it's the first call) -and every element of the sequence in the range [begin<Sequence>::type, end<Sequence>::type) in order. -[Note: accumulate is a synonym for fold — end note]

+

Returns the result of the successive application of binary ForwardOp to the +result of the previous ForwardOp invocation (State if it's the first call) +and every element of the sequence in the range [begin<Sequence>::type, end<Sequence>::type) in order. +[Note: accumulate is a synonym for fold — end note]

-
+ -
+

Parameters

- +
- - - + + + - + @@ -68,59 +65,61 @@ and every element of the sequence in the range [ - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to iterate.
State
ForwardOpBinary Lambda ExpressionBinary Lambda Expression The operation to be executed on forward traversal.
-
+

Expression semantics

-

For any Forward Sequence s, binary Lambda Expression op, and arbitrary type state:

+

For any Forward Sequence s, binary Lambda Expression op, and arbitrary type state:

-typedef accumulate<s,state,op>::type t; 
+typedef accumulate<s,state,op>::type t;
 
- +
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

-typedef fold<s,state,op>::type t; 
+typedef fold<s,state,op>::type t;
 
-
+

Complexity

Linear. Exactly size<s>::value applications of op.

-
+

Example

 typedef vector<long,float,short,double,float,long,long double> types;
 typedef accumulate<
       types
     , int_<0>
-    , if_< is_float<_2>,next<_1>,_1 >
+    , if_< is_float<_2>,next<_1>,_1 >
     >::type number_of_floats;
 
 BOOST_MPL_ASSERT_RELATION( number_of_floats::value, ==, 4 );
 
- - + diff --git a/doc/refmanual/acknowledgements.html b/doc/refmanual/acknowledgements.html index 6fd30bc..81b7bfd 100644 --- a/doc/refmanual/acknowledgements.html +++ b/doc/refmanual/acknowledgements.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Acknowledgements @@ -15,13 +12,14 @@ Front Page / Acknowledgements
-

Acknowledgements

-

The format and language of this reference documentation has been greatly influenced by -the SGI's Standard Template Library Programmer's Guide.

- +

Acknowledgements

+

The format and language of this reference documentation has been greatly influenced by +the SGI's Standard Template Library Programmer's Guide.

- + diff --git a/doc/refmanual/advance.html b/doc/refmanual/advance.html index ef26635..e99f57f 100644 --- a/doc/refmanual/advance.html +++ b/doc/refmanual/advance.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: advance @@ -15,8 +12,8 @@ Front Page / Iterators / Iterator Metafunctions / advance
-

advance

-
+

advance

+

Synopsis

 template<
@@ -29,91 +26,94 @@ struct advance
 };
 
-
+

Description

-

Moves Iterator by the distance N. For bidirectional and -random access iterators, the distance may be negative.

+

Moves Iterator by the distance N. For bidirectional and +random access iterators, the distance may be negative.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
IteratorForward IteratorForward Iterator An iterator to advance.
NIntegral ConstantIntegral Constant A distance.
-
+ -
+

Expression semantics

-

For a Forward Iterator iter and arbitrary Integral Constant n:

+

For a Forward Iterator iter and arbitrary Integral Constant n:

-typedef advance<iter,n>::type j; 
+typedef advance<iter,n>::type j;
 
- +
- + - + - +
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Precondition:If Iterator is a Forward Iterator, n::value must be nonnegative.
Precondition:

If Iterator is a Forward Iterator, n::value must be nonnegative.

+
Semantics:

Equivalent to:

-typedef iter i0; 
-typedef next<i0>::type i1; 
+typedef iter i0;
+typedef next<i0>::type i1;
 ...
 typedef next<in-1>::type j;
 

if n::value > 0, and

-typedef iter i0; 
-typedef prior<i0>::type i1; 
+typedef iter i0;
+typedef prior<i0>::type i1;
 ...
 typedef prior<in-1>::type j;
 
-

otherwise.

+

otherwise.

Postcondition:j is dereferenceable or past-the-end; -distance<iter,j>::value == n::value if n::value > 0, and -distance<j,iter>::value == n::value otherwise.
Postcondition:

j is dereferenceable or past-the-end; +distance<iter,j>::value == n::value if n::value > 0, and +distance<j,iter>::value == n::value otherwise.

+
-
+

Complexity

-

Amortized constant time if iter is a model of -Random Access Iterator, otherwise linear time.

+

Amortized constant time if iter is a model of +Random Access Iterator, otherwise linear time.

-
+

Example

 typedef range_c<int,0,10> numbers;
@@ -127,15 +127,16 @@ typedef advance<last,BOOST_MPL_ASSERT(( boost::is_same<i2,first> ));
 
- - + diff --git a/doc/refmanual/algorithms-concepts.html b/doc/refmanual/algorithms-concepts.html index f1c95fa..041e697 100644 --- a/doc/refmanual/algorithms-concepts.html +++ b/doc/refmanual/algorithms-concepts.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Concepts @@ -14,16 +11,18 @@
Front Page / Algorithms / Concepts
-
-

Concepts

- + - + diff --git a/doc/refmanual/algorithms.html b/doc/refmanual/algorithms.html index e87c335..df6834a 100644 --- a/doc/refmanual/algorithms.html +++ b/doc/refmanual/algorithms.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Algorithms @@ -15,49 +12,50 @@ Front Page / Algorithms
-

Algorithms

-

The MPL provides a broad range of fundamental algorithms aimed to -satisfy the majority of sequential compile-time data processing +

Algorithms

+

The MPL provides a broad range of fundamental algorithms aimed to +satisfy the majority of sequential compile-time data processing needs. The algorithms include compile-time counterparts -of many of the STL algorithms, iteration algorithms borrowed from +of many of the STL algorithms, iteration algorithms borrowed from functional programming languages, and more.

Unlike the algorithms in the C++ Standard Library, which operate on implict iterator ranges, the majority of MPL counterparts take -and return sequences. This derivation is not dictated by the +and return sequences. This derivation is not dictated by the functional nature of C++ compile-time computations per se, but rather by a desire to improve general usability of the library, -making programming with compile-time data structures as enjoyable +making programming with compile-time data structures as enjoyable as possible.

- -

In the spirit of the STL, MPL algorithms are generic, meaning -that they are not tied to particular sequence class -implementations, and can operate on a wide range of arguments as +

In the spirit of the STL, MPL algorithms are generic, meaning +that they are not tied to particular sequence class +implementations, and can operate on a wide range of arguments as long as they satisfy the documented requirements. The requirements -are formulated in terms of concepts. Under the hood, -algorithms are decoupled from concrete sequence -implementations by operating on Iterators.

-

All MPL algorithms can be sorted into three -major categories: iteration algorithms, querying algorithms, and -transformation algorithms. The transformation algorithms introduce -an associated Inserter concept, a rough equivalent for the notion of -Output Iterator in the Standard Library. Moreover, every -transformation algorithm provides a reverse_ counterpart, +are formulated in terms of concepts. Under the hood, +algorithms are decoupled from concrete sequence +implementations by operating on Iterators.

+

All MPL algorithms can be sorted into three +major categories: iteration algorithms, querying algorithms, and +transformation algorithms. The transformation algorithms introduce +an associated Inserter concept, a rough equivalent for the notion of +Output Iterator in the Standard Library. Moreover, every +transformation algorithm provides a reverse_ counterpart, allowing for a wider range of efficient transformations — a -common functionality documented by the Reversible Algorithm +common functionality documented by the Reversible Algorithm concept.

-
- + diff --git a/doc/refmanual/always.html b/doc/refmanual/always.html index a9d0400..1cd8123 100644 --- a/doc/refmanual/always.html +++ b/doc/refmanual/always.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: always @@ -15,11 +12,11 @@ Front Page / Metafunctions / Miscellaneous / always
-

always

-
+

always

+

Synopsis

-template< 
+template<
       typename X
     >
 struct always
@@ -29,33 +26,33 @@ struct always
 };
 
-
+

Description

-

always<X> specialization is a variadic Metafunction Class always returning the +

always<X> specialization is a variadic Metafunction Class always returning the same type, X, regardless of the number and types of passed arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -66,46 +63,48 @@ same type, X, regardless of th
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For an arbitrary type x:

 typedef always<x> f;
 
- +
- +
Return type:Metafunction Class.
Return type:

Metafunction Class.

+
Semantics:

Equivalent to

-struct f : bind< identity<_1>, x > {};
+struct f : bind< identity<_1>, x > {};
 
-
+

Example

-typedef always<true_> always_true;
+typedef always<true_> always_true;
 
-BOOST_MPL_ASSERT(( apply< always_true,false_> ));
-BOOST_MPL_ASSERT(( apply< always_true,false_,false_ > ));
-BOOST_MPL_ASSERT(( apply< always_true,false_,false_,false_ > ));
+BOOST_MPL_ASSERT(( apply< always_true,false_> ));
+BOOST_MPL_ASSERT(( apply< always_true,false_,false_ > ));
+BOOST_MPL_ASSERT(( apply< always_true,false_,false_,false_ > ));
 
- - + diff --git a/doc/refmanual/and.html b/doc/refmanual/and.html index 4358cf8..16536de 100644 --- a/doc/refmanual/and.html +++ b/doc/refmanual/and.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: and_ @@ -15,11 +12,11 @@ Front Page / Metafunctions / Logical Operations / and_
-

and_

-
+

and_

+

Synopsis

-template< 
+template<
       typename F1
     , typename F2
     ...
@@ -31,54 +28,54 @@ struct and_
 };
 
-
+

Description

Returns the result of short-circuit logical and (&&) operation on its arguments.

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
F1, F2,... FnNullary MetafunctionNullary Metafunction Operation's arguments.
-
+

Expression semantics

-

For arbitrary nullary Metafunctions f1, f2,... fn:

+

For arbitrary nullary Metafunctions f1, f2,... fn:

 typedef and_<f1,f2,...,fn>::type r;
 
- +
- + - @@ -87,11 +84,12 @@ guarantees left-to-right evaluation; the operands subsequent to the first
 typedef and_<f1,f2,...,fn> r;
 
-
Return type:Integral Constant.
Return type:Integral Constant.
Semantics:r is false_ if either of f1::type::value, f2::type::value,... -fn::type::value expressions evaluates to false, and true_ otherwise; -guarantees left-to-right evaluation; the operands subsequent to the first +
Semantics:r is false_ if either of f1::type::value, f2::type::value,... +fn::type::value expressions evaluates to false, and true_ otherwise; +guarantees left-to-right evaluation; the operands subsequent to the first fi metafunction that evaluates to false are not evaluated.
+
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -102,28 +100,29 @@ struct r : and_<f1,f2,...
 
-
+

Example

 struct unknown;
 
-BOOST_MPL_ASSERT(( and_< true_,true_ > ));
-BOOST_MPL_ASSERT_NOT(( and_< false_,true_ > ));
-BOOST_MPL_ASSERT_NOT(( and_< true_,false_ > ));
-BOOST_MPL_ASSERT_NOT(( and_< false_,false_ > ));
-BOOST_MPL_ASSERT_NOT(( and_< false_,unknown > )); // OK
-BOOST_MPL_ASSERT_NOT(( and_< false_,unknown,unknown > )); // OK too
+BOOST_MPL_ASSERT(( and_< true_,true_ > ));
+BOOST_MPL_ASSERT_NOT(( and_< false_,true_ > ));
+BOOST_MPL_ASSERT_NOT(( and_< true_,false_ > ));
+BOOST_MPL_ASSERT_NOT(( and_< false_,false_ > ));
+BOOST_MPL_ASSERT_NOT(( and_< false_,unknown > )); // OK
+BOOST_MPL_ASSERT_NOT(( and_< false_,unknown,unknown > )); // OK too
 
- - + diff --git a/doc/refmanual/apply-wrap.html b/doc/refmanual/apply-wrap.html index 51b333b..d4d11a6 100644 --- a/doc/refmanual/apply-wrap.html +++ b/doc/refmanual/apply-wrap.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: apply_wrap @@ -15,11 +12,11 @@ Front Page / Metafunctions / Invocation / apply_wrap
-

apply_wrap

-
+

apply_wrap

+

Synopsis

-template< 
+template<
       typename F
     >
 struct apply_wrap0
@@ -27,7 +24,7 @@ struct apply_wrap0
     typedef unspecified type;
 };
 
-template< 
+template<
       typename F, typename A1
     >
 struct apply_wrap1
@@ -37,7 +34,7 @@ struct apply_wrap1
 
 ...
 
-template< 
+template<
       typename F, typename A1,... typename An
     >
 struct apply_wrapn
@@ -46,37 +43,37 @@ struct apply_wrapn
 };
 
-
+

Description

-

Invokes a Metafunction Class F with arguments A1,... An.

-

In essence, apply_wrap forms are nothing more than syntactic wrappers around -F::apply<A1,... An>::type / F::apply::type expressions (hence the name). -They provide a more concise notation and higher portability than their +

Invokes a Metafunction Class F with arguments A1,... An.

+

In essence, apply_wrap forms are nothing more than syntactic wrappers around +F::apply<A1,... An>::type / F::apply::type expressions (hence the name). +They provide a more concise notation and higher portability than their underlaying constructs at the cost of an extra template instantiation.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -86,13 +83,13 @@ underlaying constructs at the cost of an extra template instantiation.

ParameterRequirementDescription
ParameterRequirementDescription
FMetafunction ClassMetafunction Class A metafunction class to invoke.
A1,... An
-
+

Expression semantics

-

For any Metafunction Class f and arbitrary types a1,... an:

+

For any Metafunction Class f and arbitrary types a1,... an:

 typedef apply_wrapn<f,a1,...an>::type t;
 
- +
@@ -100,13 +97,13 @@ typedef apply_wrapn&
Semantics:If n > 0, equivalent to typedef f::apply<a1,... an>::type t;, otherwise equivalent to either typedef f::apply::type t; or -typedef f::apply<>::type t; depending on whether f::apply is +typedef f::apply<>::type t; depending on whether f::apply is a class or a class template.
-
+

Example

 struct f0
@@ -116,7 +113,7 @@ struct f0
         typedef char type;
     };
 };
-    
+
 struct g0
 {
     struct apply { typedef char type; };
@@ -140,15 +137,16 @@ typedef apply_wrapBOOST_MPL_ASSERT(( is_same<r3,char> ));
 
- - + diff --git a/doc/refmanual/apply.html b/doc/refmanual/apply.html index 1a1d6eb..7f03f73 100644 --- a/doc/refmanual/apply.html +++ b/doc/refmanual/apply.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: apply @@ -15,11 +12,11 @@ Front Page / Metafunctions / Invocation / apply
-

apply

-
+

apply

+

Synopsis

-template< 
+template<
       typename F
     >
 struct apply0
@@ -27,7 +24,7 @@ struct apply0
     typedef unspecified type;
 };
 
-template< 
+template<
       typename F, typename A1
     >
 struct apply1
@@ -37,7 +34,7 @@ struct apply1
 
 ...
 
-template< 
+template<
       typename F, typename A1,... typename An
     >
 struct applyn
@@ -45,7 +42,7 @@ struct applyn
     typedef unspecified type;
 };
 
-template< 
+template<
       typename F
     , typename A1 = unspecified
     ...
@@ -57,33 +54,33 @@ struct apply
 };
 
-
+

Description

-

Invokes a Metafunction Class or a Lambda Expression F with arguments A1,... An.

+

Invokes a Metafunction Class or a Lambda Expression F with arguments A1,... An.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -93,14 +90,14 @@ struct apply
ParameterRequirementDescription
ParameterRequirementDescription
FLambda ExpressionLambda Expression An expression to invoke.
A1,... An
-
+

Expression semantics

-

For any Lambda Expression f and arbitrary types a1,... an:

+

For any Lambda Expression f and arbitrary types a1,... an:

 typedef applyn<f,a1,...an>::type t;
 typedef apply<f,a1,...an>::type t;
 
- +
@@ -111,7 +108,7 @@ typedef apply<f,a1,...
-
+

Example

 template< typename N1, typename N2 > struct int_plus
@@ -119,22 +116,23 @@ template< typename N1, typename N2 > struct int_plus
 {
 };
 
-typedef apply< int_plus<_1,_2>, int_<2>, int_<3> >::type r1;
+typedef apply< int_plus<_1,_2>, int_<2>, int_<3> >::type r1;
 typedef apply< quote2<int_plus>, int_<2>, int_<3> >::type r2;
 
 BOOST_MPL_ASSERT_RELATION( r1::value, ==, 5 );
 BOOST_MPL_ASSERT_RELATION( r2::value, ==, 5 );
 
- - + diff --git a/doc/refmanual/arg.html b/doc/refmanual/arg.html index 3ea827c..f4ff6f4 100644 --- a/doc/refmanual/arg.html +++ b/doc/refmanual/arg.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: arg - - +
Front Page / Metafunctions / Composition and Argument Binding / arg
+
Front Page / Metafunctions / Composition and Argument Binding / arg
-

arg

-
+

arg

+

Synopsis

 template< int n > struct arg;
@@ -42,28 +39,28 @@ template<> struct arg<n
 };
 
-
+

Description

-

arg<n> specialization is a Metafunction Class that return the nth of its arguments.

+

arg<n> specialization is a Metafunction Class that return the nth of its arguments.

-
+ -
+

Parameters

- +
- - - + + + @@ -74,14 +71,14 @@ template<> struct arg<n
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

-

For any integral constant n in the range [1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY] and +

For any integral constant n in the range [1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY] and arbitrary types a1,... an:

 typedef apply_wrapn< arg<n>,a1,...an >::type x;
 
- +
@@ -92,7 +89,7 @@ typedef apply_wrapn&
-
+

Example

 typedef apply_wrap5< arg<1>,bool,char,short,int,long >::type t1;
@@ -102,15 +99,16 @@ typedef apply_wrapBOOST_MPL_ASSERT(( is_same< t3, short > ));
 
- - - + + diff --git a/doc/refmanual/arithmetic-operations.html b/doc/refmanual/arithmetic-operations.html index a55e709..d8f3d82 100644 --- a/doc/refmanual/arithmetic-operations.html +++ b/doc/refmanual/arithmetic-operations.html @@ -1,34 +1,32 @@ - - - - + The MPL Reference Manual: Arithmetic Operations - +
Front Page / Metafunctions / Arithmetic Operations
- - + + diff --git a/doc/refmanual/assert-msg.html b/doc/refmanual/assert-msg.html index d883baa..2e7f8fa 100644 --- a/doc/refmanual/assert-msg.html +++ b/doc/refmanual/assert-msg.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_ASSERT_MSG @@ -14,9 +11,9 @@
Front Page / Macros / Asserts / BOOST_MPL_ASSERT_MSG
-
-

BOOST_MPL_ASSERT_MSG

-
+
+

BOOST_MPL_ASSERT_MSG

+

Synopsis

 #define BOOST_MPL_ASSERT_MSG( condition, message, types ) \
@@ -24,29 +21,29 @@
 /**/
 
-
+

Description

-

Generates a compilation error with an embedded custom message when the condition +

Generates a compilation error with an embedded custom message when the condition doesn't hold.

-
+ -
+

Parameters

- +
- - - + + + @@ -67,25 +64,27 @@ in the error message.
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

-

For any integral constant expression expr, legal C++ identifier message, and +

For any integral constant expression expr, legal C++ identifier message, and arbitrary types t1, t2,... tn:

 BOOST_MPL_ASSERT_MSG( expr, message, (t1, t2,... tn) );
 
- +
- + - + -
Return type:None.
Return type:

None.

+
Precondition:t1, t2,... tn are non-void.
Precondition:

t1, t2,... tn are non-void.

+
Semantics:

Generates a compilation error if expr::value != true, otherwise +

Semantics:

Generates a compilation error if expr != true, otherwise has no effect.

When possible within the compiler's diagnostic capabilities, -the error message will include the message identifier and the parenthized +the error message will include the message identifier and the parenthized list of t1, t2,... tn types, and have a general form of:

 ... ************( ...::message )************)(t1, t2,... tn) ...
@@ -97,18 +96,20 @@ list of t1, 
 BOOST_MPL_ASSERT_MSG( expr, message, (types<t1, t2,... tn>) );
 
- +
- + - + -
Return type:None.
Return type:

None.

+
Precondition:None.
Precondition:

None.

+
Semantics:

Generates a compilation error if expr::value != true, otherwise +

Semantics:

Generates a compilation error if expr != true, otherwise has no effect.

When possible within the compiler's diagnostics capabilities, -the error message will include the message identifier and the list of +the error message will include the message identifier and the list of t1, t2,... tn types, and have a general form of:

 ... ************( ...::message )************)(types<t1, t2,... tn>) ...
@@ -118,13 +119,13 @@ the error message will include the message
 
-
+

Example

 template< typename T > struct my
 {
     // ...
-    BOOST_MPL_ASSERT_MSG( 
+    BOOST_MPL_ASSERT_MSG(
           is_integral<T>::value
         , NON_INTEGRAL_TYPES_ARE_NOT_ALLOWED
         , (T)
@@ -141,15 +142,16 @@ my<void*> test;
 //   ' to non-scalar type `mpl_::assert<false>' requested
 
- - +
diff --git a/doc/refmanual/assert-not.html b/doc/refmanual/assert-not.html index c391cf9..ca1b005 100644 --- a/doc/refmanual/assert-not.html +++ b/doc/refmanual/assert-not.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_ASSERT_NOT @@ -14,9 +11,9 @@
Front Page / Macros / Asserts / BOOST_MPL_ASSERT_NOT
-
-

BOOST_MPL_ASSERT_NOT

-
+
+

BOOST_MPL_ASSERT_NOT

+

Synopsis

 #define BOOST_MPL_ASSERT_NOT( pred ) \
@@ -24,55 +21,56 @@
 /**/
 
-
+

Description

Generates a compilation error when predicate holds true.

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
predBoolean nullary MetafunctionBoolean nullary Metafunction A predicate to be asserted to be false.
-
+

Expression semantics

-

For any boolean nullary Metafunction pred:

+

For any boolean nullary Metafunction pred:

 BOOST_MPL_ASSERT_NOT(( pred ));
 
- +
- +
Return type:None.
Return type:

None.

+
Semantics:

Generates a compilation error if pred::type::value != false, otherwise -has no effect. Note that double parentheses are required even if no commas +has no effect. Note that double parentheses are required even if no commas appear in the condition.

When possible within the compiler's diagnostic capabilities, -the error message will include the predicate's full type name, and have a +the error message will include the predicate's full type name, and have a general form of:

 ... ************boost::mpl::not_< pred >::************ ...
@@ -82,7 +80,7 @@ general form of:

-
+

Example

 template< typename T, typename U > struct my
@@ -96,19 +94,20 @@ my<void,void> test;
 // In instantiation of `my<void, void>':
 //   instantiated from here
 // conversion from `
-//   mpl_::failed************boost::mpl::not_<boost::is_same<void, void> 
+//   mpl_::failed************boost::mpl::not_<boost::is_same<void, void>
 //   >::************' to non-scalar type `mpl_::assert<false>' requested
 
- - + diff --git a/doc/refmanual/assert-relation.html b/doc/refmanual/assert-relation.html index d33ad69..e948c03 100644 --- a/doc/refmanual/assert-relation.html +++ b/doc/refmanual/assert-relation.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_ASSERT_RELATION @@ -14,9 +11,9 @@
Front Page / Macros / Asserts / BOOST_MPL_ASSERT_RELATION
-
-

BOOST_MPL_ASSERT_RELATION

-
+
+

BOOST_MPL_ASSERT_RELATION

+

Synopsis

 #define BOOST_MPL_ASSERT_RELATION( x, relation, y ) \
@@ -24,30 +21,30 @@
 /**/
 
-
+

Description

-

A specialized assertion macro for checking numerical conditions. Generates -a compilation error when the condition ( x relation y ) +

A specialized assertion macro for checking numerical conditions. Generates +a compilation error when the condition ( x relation y ) doesn't hold.

-
+ -
+

Parameters

- +
- - - + + + @@ -67,17 +64,18 @@ checked.
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For any integral constants x, y and a legal C++ operator token op:

 BOOST_MPL_ASSERT_RELATION( x, op, y );
 
- +
- +
Return type:None.
Return type:

None.

+
Semantics:

Generates a compilation error if ( x op y ) != true, otherwise has no effect.

@@ -92,7 +90,7 @@ the actual values of both operands, and have a general form of:

-
+

Example

 template< typename T, typename U > struct my
@@ -106,18 +104,19 @@ my<char[50],char[10]> test;
 // In instantiation of `my<char[50], char[10]>':
 //   instantiated from here
 // conversion from `
-//   mpl_::failed************mpl_::assert_relation<less, 50, 10>::************' 
+//   mpl_::failed************mpl_::assert_relation<less, 50, 10>::************'
 //   to non-scalar type `mpl_::assert<false>' requested
 
- - + diff --git a/doc/refmanual/assert.html b/doc/refmanual/assert.html index cd2f4e5..7992b52 100644 --- a/doc/refmanual/assert.html +++ b/doc/refmanual/assert.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_ASSERT @@ -14,9 +11,9 @@
Front Page / Macros / Asserts / BOOST_MPL_ASSERT
-
-

BOOST_MPL_ASSERT

-
+
+

BOOST_MPL_ASSERT

+

Synopsis

 #define BOOST_MPL_ASSERT( pred ) \
@@ -24,55 +21,56 @@
 /**/
 
-
+

Description

Generates a compilation error when the predicate pred holds false.

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
predBoolean nullary MetafunctionBoolean nullary Metafunction A predicate to be asserted.
-
+

Expression semantics

-

For any boolean nullary Metafunction pred:

+

For any boolean nullary Metafunction pred:

 BOOST_MPL_ASSERT(( pred ));
 
- +
- +
Return type:None.
Return type:

None.

+
Semantics:

Generates a compilation error if pred::type::value != true, otherwise -has no effect. Note that double parentheses are required even if no commas +has no effect. Note that double parentheses are required even if no commas appear in the condition.

When possible within the compiler's diagnostic capabilities, -the error message will include the predicate's full type name, and have a +the error message will include the predicate's full type name, and have a general form of:

 ... ************ pred::************ ...
@@ -82,7 +80,7 @@ general form of:

-
+

Example

 template< typename T, typename U > struct my
@@ -96,19 +94,20 @@ my<void*,char*> test;
 // In instantiation of `my<void, char*>':
 //   instantiated from here
 // conversion from `
-//   mpl_::failed************boost::is_same<void, char*>::************' to 
+//   mpl_::failed************boost::is_same<void, char*>::************' to
 //   non-scalar type `mpl_::assert<false>' requested
 
- - + diff --git a/doc/refmanual/asserts.html b/doc/refmanual/asserts.html index 068f8ab..ac4e869 100644 --- a/doc/refmanual/asserts.html +++ b/doc/refmanual/asserts.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Asserts @@ -15,22 +12,23 @@ Front Page / Macros / Asserts
-

Asserts

-

The MPL supplies a suite of static assertion macros that are specifically +

Asserts

+

The MPL supplies a suite of static assertion macros that are specifically designed to generate maximally useful and informative error messages within the diagnostic capabilities of each compiler.

All assert macros can be used at class, function, or namespace scope.

-
- + diff --git a/doc/refmanual/associative-sequence.html b/doc/refmanual/associative-sequence.html index 71340c3..84812bf 100644 --- a/doc/refmanual/associative-sequence.html +++ b/doc/refmanual/associative-sequence.html @@ -1,68 +1,65 @@ - - - - + The MPL Reference Manual: Associative Sequence - +
Front Page / Sequences / Concepts / Associative Sequence
-

Associative Sequence

-
+

Associative Sequence

+

Description

-

An Associative Sequence is a Forward Sequence that allows efficient retrieval of -elements based on keys. Unlike associative containers in the C++ Standard Library, -MPL associative sequences have no associated ordering relation. Instead, -type identity is used to impose an equivalence relation on keys, and the -order in which sequence elements are traversed during iteration is left +

An Associative Sequence is a Forward Sequence that allows efficient retrieval of +elements based on keys. Unlike associative containers in the C++ Standard Library, +MPL associative sequences have no associated ordering relation. Instead, +type identity is used to impose an equivalence relation on keys, and the +order in which sequence elements are traversed during iteration is left unspecified.

-
+

Definitions

-
    -
  • A key is a part of the element type used to identify and retrieve +
      +
    • A key is a part of the element type used to identify and retrieve the element within the sequence.
    • -
    • A value is a part of the element type retrievied from the sequence +
    • A value is a part of the element type retrievied from the sequence by its key.
-
+

Expression requirements

-

In the following table and subsequent specifications, s is an Associative Sequence, +

In the following table and subsequent specifications, s is an Associative Sequence, x is a sequence element, and k and def are arbitrary types.

-

In addition to the requirements defined in Forward Sequence, +

In addition to the requirements defined in Forward Sequence, the following must be met:

- +
- - - + + + - + - + - + @@ -84,33 +81,33 @@ the following must be met:

ExpressionTypeComplexity
ExpressionTypeComplexity
has_key<s,k>::typeBoolean Integral ConstantBoolean Integral Constant Amortized constant time
count<s,k>::typeIntegral ConstantIntegral Constant Amortized constant time
order<s,k>::typeIntegral Constant or void_Integral Constant or void_ Amortized constant time
at<s,k>::type
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Forward Sequence.

- +where they differ from, or are not defined in Forward Sequence.

+
- - + + - +elements with the key k in s; see has_key. +see count. - + +in the sequence s; see at. +used to identify x in s; see key_type. +used for x in s; see value_type.
ExpressionSemantics
ExpressionSemantics
has_key<s,k>::typeA boolean Integral Constant c such that +A boolean Integral Constant c such that c::value == true if and only if there is one or more -elements with the key k in s; see has_key.
count<s,k>::type The number of elements with the key k in s; -see count.
order<s,k>::typeA unique unsigned Integral Constant associated -with the key k in the sequence s; see order.A unique unsigned Integral Constant associated +with the key k in the sequence s; see order.
 at<s,k>::type
@@ -118,42 +115,43 @@ with the key k in the sequence
 
The first element associated with the key k -in the sequence s; see at.
key_type<s,x>::type The key part of the element x that would be -used to identify x in s; see key_type.
value_type<s,x>::type The value part of the element x that would be -used for x in s; see value_type.
-
+ - - - + + diff --git a/doc/refmanual/at-c.html b/doc/refmanual/at-c.html index 36e4b1d..fd7f73d 100644 --- a/doc/refmanual/at-c.html +++ b/doc/refmanual/at-c.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: at_c @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / at_c
-

at_c

-
+

at_c

+

Synopsis

 template<
@@ -29,35 +26,35 @@ struct at_c
 };
 
-
+

Description

-

Returns a type identical to the nth element from the beginning of -the sequence. at_c<Sequence,n>::type is a shorcut notation for +

Returns a type identical to the nth element from the beginning of +the sequence. at_c<Sequence,n>::type is a shorcut notation for at< Sequence, long_<n> >::type.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -68,18 +65,20 @@ specifying the element to be retrieved.
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
n
-
+

Expression semantics

-typedef at_c<Sequence,n>::type t; 
+typedef at_c<Sequence,n>::type t;
 
- +
- + - +
Return type:A type
Return type:

A type

+
Precondition:0 <= n < size<Sequence>::value
Precondition:

0 <= n < size<Sequence>::value

+
Semantics:

Equivalent to

@@ -90,46 +89,47 @@ typedef at< Sequence, 
+

Complexity

- +
- - + + - + - +
Sequence archetypeComplexity
Sequence archetypeComplexity
Forward Sequence
Forward Sequence Linear.
Random Access Sequence
Random Access Sequence Amortized constant time.
-
+

Example

 typedef range_c<long,10,50> range;
-BOOST_MPL_ASSERT_RELATION( (at_c< range,0 >::value), ==, 10 );
-BOOST_MPL_ASSERT_RELATION( (at_c< range,10 >::value), ==, 20 );
-BOOST_MPL_ASSERT_RELATION( (at_c< range,40 >::value), ==, 50 );
+BOOST_MPL_ASSERT_RELATION( (at_c< range,0 >::type::value), ==, 10 );
+BOOST_MPL_ASSERT_RELATION( (at_c< range,10 >::type::value), ==, 20 );
+BOOST_MPL_ASSERT_RELATION( (at_c< range,40 >::type::value), ==, 50 );
 
- - +
diff --git a/doc/refmanual/at.html b/doc/refmanual/at.html index 2d8db3f..b342706 100644 --- a/doc/refmanual/at.html +++ b/doc/refmanual/at.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: at @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / at
-

at

-
+

at

+

Synopsis

 template<
@@ -39,52 +36,52 @@ struct at
 };
 
-
+

Description

-

at is an overloaded name:

+

at is an overloaded name:

    -
  • at<Sequence,N> returns the N-th element from the beginning of the -Forward Sequence Sequence.
  • -
  • at<AssocSeq,Key,Default> returns the first element associated with Key -in the Associative Sequence AssocSeq, or Default if no such element +
  • at<Sequence,N> returns the N-th element from the beginning of the +Forward Sequence Sequence.
  • +
  • at<AssocSeq,Key,Default> returns the first element associated with Key +in the Associative Sequence AssocSeq, or Default if no such element exists.
-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + - + @@ -100,20 +97,22 @@ not found.
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
AssocSeqAssociative SequenceAssociative Sequence A sequence to be examined.
NIntegral ConstantIntegral Constant An offset from the beginning of the sequence specifying the element to be retrieved.
-
+

Expression semantics

-

For any Forward Sequence s, and Integral Constant n:

+

For any Forward Sequence s, and Integral Constant n:

-typedef at<s,n>::type t; 
+typedef at<s,n>::type t;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:0 <= n::value < size<s>::value.
Precondition:

0 <= n::value < size<s>::value.

+
Semantics:

Equivalent to

@@ -125,11 +124,11 @@ typedef deref< 
-

For any Associative Sequence s, and arbitrary types key and x:

+

For any Associative Sequence s, and arbitrary types key and x:

-typedef at<s,key,x>::type t; 
+typedef at<s,key,x>::type t;
 
- +
@@ -142,13 +141,14 @@ otherwise t is identical to
-typedef at<s,key>::type t; 
+typedef at<s,key>::type t;
 
-
+
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

@@ -161,31 +161,31 @@ typedef at<s,key,
-

Complexity

- +

Complexity

+
- - + + - + - + - +
Sequence archetypeComplexity
Sequence archetypeComplexity
Forward Sequence
Forward Sequence Linear.
Random Access Sequence
Random Access Sequence Amortized constant time.
Associative Sequence
Associative Sequence Amortized constant time.
-
+

Example

 typedef range_c<long,10,50> range;
@@ -200,15 +200,16 @@ typedef set< int const,long*,doub
 BOOST_MPL_ASSERT(( is_same< at<s,int>::type, int > ));
 
- - +
diff --git a/doc/refmanual/aux-lambda-support.html b/doc/refmanual/aux-lambda-support.html index 115a65a..8f72f85 100644 --- a/doc/refmanual/aux-lambda-support.html +++ b/doc/refmanual/aux-lambda-support.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: BOOST_MPL_AUX_LAMBDA_SUPPORT - - +
Front Page / Macros / Broken Compiler Workarounds / BOOST_MPL_AUX_LAMBDA_SUPPORT
+
Front Page / Macros / Broken Compiler Workarounds / BOOST_MPL_AUX_LAMBDA_SUPPORT
-
-

BOOST_MPL_AUX_LAMBDA_SUPPORT

-
+
+

BOOST_MPL_AUX_LAMBDA_SUPPORT

+

Synopsis

 #define BOOST_MPL_AUX_LAMBDA_SUPPORT(arity, fun, params) \
@@ -24,30 +21,30 @@
 /**/
 
-
+

Description

-

Enables metafunction fun for the use in Lambda Expressions on -compilers that don't support partial template specialization or/and +

Enables metafunction fun for the use in Lambda Expressions on +compilers that don't support partial template specialization or/and template template parameters. Expands to nothing on conforming compilers.

-
+ -
+

Parameters

- +
- - - + + + @@ -61,16 +58,16 @@ template parameters, including the defaults. - +
ParameterRequirementDescription
ParameterRequirementDescription
The metafunction's name.
paramsA PP-tupleA PP-tuple A tuple of the metafunction's parameter names, in their original order, including the defaults.
-
+

Expression semantics

-

For any integral constant n, a Metafunction fun, and arbitrary types A1,... An:

+

For any integral constant n, a Metafunction fun, and arbitrary types A1,... An:

 template< typename A1,... typename An > struct fun
 {
@@ -79,24 +76,24 @@ template< typename A1,... typename An > struct fun
     BOOST_MPL_AUX_LAMBDA_SUPPORT(n, fun, (A1,...An))
 };
 
- +
- - +Lambda Expressions with the semantics described in this manual.
Precondition:Appears in fun's scope, immediately followed by the scope-closing +
Precondition:Appears in fun's scope, immediately followed by the scope-closing bracket (}).
Return type:None.
Semantics:Expands to nothing and has no effect on conforming compilers. On compilers that +
Semantics:Expands to nothing and has no effect on conforming compilers. On compilers that don't support partial template specialization or/and template template parameters expands to an unspecified token sequence enabling fun to participate in -Lambda Expressions with the semantics described in this manual.
-
+

Example

 template< typename T, typename U = int > struct f
@@ -106,18 +103,19 @@ template< typename T, typename U = int > struct f
     BOOST_MPL_AUX_LAMBDA_SUPPORT(2, f, (T,U))
 };
 
-typedef apply1< f<char,_1>,long >::type r;
+typedef apply1< f<char,_1>,long >::type r;
 BOOST_MPL_ASSERT(( is_same< r, char[sizeof(long)] > ));
 
- - - + + diff --git a/doc/refmanual/back-extensible-sequence.html b/doc/refmanual/back-extensible-sequence.html index 1feb52a..1cbbb29 100644 --- a/doc/refmanual/back-extensible-sequence.html +++ b/doc/refmanual/back-extensible-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Back Extensible Sequence @@ -15,39 +12,39 @@
Front Page / Sequences / Concepts / Back Extensible Sequence
-

Back Extensible Sequence

-
+

Back Extensible Sequence

+

Description

-

A Back Extensible Sequence is an Extensible Sequence that supports amortized constant +

A Back Extensible Sequence is an Extensible Sequence that supports amortized constant time insertion and removal operations at the end.

-
+ -
+

Expression requirements

-

In addition to the requirements defined in Extensible Sequence, -for any Back Extensible Sequence s the following must be met:

- +

In addition to the requirements defined in Extensible Sequence, +for any Back Extensible Sequence s the following must be met:

+
- - - + + + - + - + @@ -57,51 +54,52 @@ for any Back Extensi
ExpressionTypeComplexity
ExpressionTypeComplexity
push_back<s,x>::typeBack Extensible SequenceBack Extensible Sequence Amortized constant time
pop_back<s>::typeBack Extensible SequenceBack Extensible Sequence Amortized constant time
back<s>::type
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Extensible Sequence.

- +where they differ from, or are not defined in Extensible Sequence.

+
- - + + +see push_back. +see pop_back. - +
ExpressionSemantics
ExpressionSemantics
push_back<s,x>::type Equivalent to insert<s,end<s>::type,x>::type; -see push_back.
pop_back<v>::type Equivalent to erase<s,end<s>::type>::type; -see pop_back.
back<s>::typeThe last element in the sequence; see back.The last element in the sequence; see back.
-
+ - - + diff --git a/doc/refmanual/back-inserter.html b/doc/refmanual/back-inserter.html index 43db93e..150a4f8 100644 --- a/doc/refmanual/back-inserter.html +++ b/doc/refmanual/back-inserter.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: back_inserter @@ -15,8 +12,8 @@ Front Page / Algorithms / Inserters / back_inserter
-

back_inserter

-
+

back_inserter

+

Synopsis

 template<
@@ -29,92 +26,93 @@ struct back_inserter
 };
 
-
+

Description

Inserts elements at the end of the sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SeqBack Extensible SequenceBack Extensible Sequence A sequence to bind the inserter to.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Inserter.

-

For any Back Extensible Sequence s:

- +where they differ from, or are not defined in Inserter.

+

For any Back Extensible Sequence s:

+
- - + + -
ExpressionSemantics
ExpressionSemantics
back_inserter<s>

An Inserter in, equivalent to

+

An Inserter in, equivalent to

-struct in : inserter<s,push_back<_1,_2> > {};
+struct in : inserter<s,push_back<_1,_2> > {};
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef copy<
       range_c<int,5,10>
     , back_inserter< vector_c<int,0,1,2,3,4> >
     >::type range;
-   
+
 BOOST_MPL_ASSERT(( equal< range, range_c<int,0,10> > ));
 
- - + diff --git a/doc/refmanual/back.html b/doc/refmanual/back.html index b86f608..f5146b1 100644 --- a/doc/refmanual/back.html +++ b/doc/refmanual/back.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: back @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / back
-

back

-
+

back

+

Synopsis

 template<
@@ -28,55 +25,57 @@ struct back
 };
 
-
+

Description

Returns the last element in the sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceBidirectional SequenceBidirectional Sequence A sequence to be examined.
-
+

Expression semantics

-

For any Bidirectional Sequence s:

+

For any Bidirectional Sequence s:

-typedef back<s>::type t; 
+typedef back<s>::type t;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:empty<s>::value == false.
Precondition:

empty<s>::value == false.

+
Semantics:

Equivalent to

@@ -87,31 +86,32 @@ typedef deref< 
+

Complexity

Amortized constant time.

-
+

Example

 typedef range_c<int,0,1> range1;
 typedef range_c<int,0,10> range2;
 typedef range_c<int,-10,0> range3;
-    
+
 BOOST_MPL_ASSERT_RELATION( back<range1>::value, ==, 0 );
 BOOST_MPL_ASSERT_RELATION( back<range2>::value, ==, 9 );
 BOOST_MPL_ASSERT_RELATION( back<range3>::value, ==, -1 );
 
- - +
diff --git a/doc/refmanual/begin.html b/doc/refmanual/begin.html index da3598a..c42c277 100644 --- a/doc/refmanual/begin.html +++ b/doc/refmanual/begin.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: begin @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / begin
-

begin

-
+

begin

+

Synopsis

 template<
@@ -28,33 +25,33 @@ struct begin
 };
 
-
+

Description

Returns an iterator that points to the first element of the sequence. If -the argument is not a Forward Sequence, returns void_.

+the argument is not a Forward Sequence, returns void_.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -66,32 +63,32 @@ returned.
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For any arbitrary type x:

 typedef begin<x>::type first;
 
- +
- + - + -
Return type:Forward Iterator or void_.
Return type:Forward Iterator or void_.
Semantics:If x is a Forward Sequence, first is an iterator pointing to the -first element of s; otherwise first is void_.
Semantics:If x is a Forward Sequence, first is an iterator pointing to the +first element of s; otherwise first is void_.
Postcondition:If first is an iterator, it is either dereferenceable or past-the-end; it +
Postcondition:If first is an iterator, it is either dereferenceable or past-the-end; it is past-the-end if and only if size<x>::value == 0.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef vector< unsigned char,unsigned short,
@@ -103,15 +100,16 @@ typedef begin<unsigned_types>
 BOOST_MPL_ASSERT(( is_same< begin<int>::type, void_ > ));
 
- - + diff --git a/doc/refmanual/bidirectional-iterator.html b/doc/refmanual/bidirectional-iterator.html index c967270..1df9bde 100644 --- a/doc/refmanual/bidirectional-iterator.html +++ b/doc/refmanual/bidirectional-iterator.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Bidirectional Iterator @@ -15,70 +12,70 @@ Front Page / Iterators / Concepts / Bidirectional Iterator
-

Bidirectional Iterator

-
+

Bidirectional Iterator

+

Description

-

A Bidirectional Iterator is a Forward Iterator that provides a way to +

A Bidirectional Iterator is a Forward Iterator that provides a way to obtain an iterator to the previous element in a sequence.

-
+ -
+

Definitions

    -
  • a bidirectional iterator i is decrementable if there is a "previous" -iterator, that is, if prior<i>::type expression is well-defined; -iterators pointing to the first element of the sequence are not +
  • a bidirectional iterator i is decrementable if there is a "previous" +iterator, that is, if prior<i>::type expression is well-defined; +iterators pointing to the first element of the sequence are not decrementable.
-
+

Expression requirements

-

In addition to the requirements defined in Forward Iterator, +

In addition to the requirements defined in Forward Iterator, the following requirements must be met.

- +
- - - + + + - + - + -
ExpressionTypeComplexity
ExpressionTypeComplexity
next<i>::typeBidirectional IteratorBidirectional Iterator Amortized constant time
prior<i>::typeBidirectional IteratorBidirectional Iterator Amortized constant time
i::categoryIntegral Constant, convertible +Integral Constant, convertible to bidirectional_iterator_tag Constant time
-
+

Expression semantics

 typedef prior<i>::type j;
 
- +
- @@ -86,25 +83,26 @@ sequence
Precondition:i is decrementable
Semantics:j is an iterator pointing to the previous element of the +
Semantics:j is an iterator pointing to the previous element of the sequence
Postcondition:j is dereferenceable and incrementable
-
+

Invariants

-

For any bidirectional iterators i and j the following invariants +

For any bidirectional iterators i and j the following invariants always hold:

    -
  • If i is incrementable, then prior< next<i>::type >::type is a null +
  • If i is incrementable, then prior< next<i>::type >::type is a null operation; similarly, if i is decrementable, next< prior<i>::type >::type is a null operation.
- - + diff --git a/doc/refmanual/bidirectional-sequence.html b/doc/refmanual/bidirectional-sequence.html index 32ca796..57e7bbb 100644 --- a/doc/refmanual/bidirectional-sequence.html +++ b/doc/refmanual/bidirectional-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Bidirectional Sequence @@ -15,39 +12,39 @@ Front Page / Sequences / Concepts / Bidirectional Sequence
-

Bidirectional Sequence

-
+

Bidirectional Sequence

+ -
+

Expression requirements

-

In addition to the requirements defined in Forward Sequence, -for any Bidirectional Sequence s the following must be met:

- +

In addition to the requirements defined in Forward Sequence, +for any Bidirectional Sequence s the following must be met:

+
- - - + + + - + - + @@ -57,43 +54,44 @@ for any Bidirectional
ExpressionTypeComplexity
ExpressionTypeComplexity
begin<s>::typeBidirectional IteratorBidirectional Iterator Amortized constant time
end<s>::typeBidirectional IteratorBidirectional Iterator Amortized constant time
back<s>::type
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Forward Sequence.

- +where they differ from, or are not defined in Forward Sequence.

+
- - + + - +
ExpressionSemantics
ExpressionSemantics
back<s>::typeThe last element in the sequence; see back.The last element in the sequence; see back.
-
+ - - + diff --git a/doc/refmanual/bind.html b/doc/refmanual/bind.html index 2003a4c..0c0f9bf 100644 --- a/doc/refmanual/bind.html +++ b/doc/refmanual/bind.html @@ -1,25 +1,22 @@ - - - - + The MPL Reference Manual: bind - - +
Front Page / Metafunctions / Composition and Argument Binding / bind
+
Front Page / Metafunctions / Composition and Argument Binding / bind
-

bind

-
+

bind

+

Synopsis

-template< 
+template<
       typename F
     >
 struct bind0
@@ -28,7 +25,7 @@ struct bind0
     // ...
 };
 
-template< 
+template<
       typename F, typename A1
     >
 struct bind1
@@ -39,7 +36,7 @@ struct bind1
 
 ...
 
-template< 
+template<
       typename F, typename A1,... typename An
     >
 struct bindn
@@ -48,7 +45,7 @@ struct bindn
     // ...
 };
 
-template< 
+template<
       typename F
     , typename A1 = unspecified
     ...
@@ -61,40 +58,40 @@ struct bind
 };
 
-
+

Description

-

bind is a higher-order primitive for Metafunction Class composition -and argument binding. In essence, it's a compile-time counterpart of -the similar run-time functionality provided by Boost.Bind and Boost.Lambda +

bind is a higher-order primitive for Metafunction Class composition +and argument binding. In essence, it's a compile-time counterpart of +the similar run-time functionality provided by Boost.Bind and Boost.Lambda libraries.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + @@ -104,22 +101,22 @@ libraries.

ParameterRequirementDescription
ParameterRequirementDescription
FMetafunction ClassMetafunction Class An metafunction class to perform binding on.
A1,... An
-
+

Expression semantics

-

For any Metafunction Class f and arbitrary types a1,... an:

+

For any Metafunction Class f and arbitrary types a1,... an:

 typedef bind<f,a1,...an> g;
 typedef bindn<f,a1,...an> g;
 
- +
- +
Return type:Metafunction Class
Return type:Metafunction Class
- +
@@ -127,17 +124,17 @@ typedef bindn<f,a1,...a
 struct g
 {
-    template< 
+    template<
           typename U1 = unspecified
         ...
         , typename Un = unspecified
         >
     struct apply
         : apply_wrapn<
-              typename h0<f,U1,...Un>::type 
-            , typename h1<a1,U1,...Un>::type 
+              typename h0<f,U1,...Un>::type
+            , typename h1<a1,U1,...Un>::type
             ...
-            , typename hn<an,U1,...Un>::type 
+            , typename hn<an,U1,...Un>::type
             >
     {
     };
@@ -150,14 +147,14 @@ template< typename X, typename U1,... typename Un > stru
 {
 };
 
-

if f or ak is a bind expression or a placeholder, and

+

if f or ak is a bind expression or a placeholder, and

 template< typename X, typename U1,... typename Un > struct hk
 {
     typedef X type;
 };
 
-

otherwise. [Note: Every nth appearance of the unnamed placeholder +

otherwise. [Note: Every nth appearance of the unnamed placeholder in the bind<f,a1,...an> specialization is replaced with the corresponding numbered placeholder _n — end note]

@@ -165,7 +162,7 @@ numbered placeholder _n
-
+

Example

 struct f1
@@ -185,26 +182,26 @@ struct f5
     };
 };
 
-typedef apply_wrap1< 
-      bind1<f1,_1>
-    , int 
+typedef apply_wrap1<
+      bind1<f1,_1>
+    , int
     >::type r11;
 
-typedef apply_wrap5< 
-      bind1<f1,_5>
-    , void,void,void,void,int 
+typedef apply_wrap5<
+      bind1<f1,_5>
+    , void,void,void,void,int
     >::type r12;
 
 BOOST_MPL_ASSERT(( is_same<r11,int> ));
 BOOST_MPL_ASSERT(( is_same<r12,int> ));
 
-typedef apply_wrap5< 
-      bind5<f5,_1,_2,_3,_4,_5>
-    , void,void,void,void,int 
+typedef apply_wrap5<
+      bind5<f5,_1,_2,_3,_4,_5>
+    , void,void,void,void,int
     >::type r51;
 
 typedef apply_wrap5<
-      bind5<f5,_5,_4,_3,_2,_1>
+      bind5<f5,_5,_4,_3,_2,_1>
     , int,void,void,void,void
     >::type r52;
 
@@ -212,16 +209,17 @@ typedef apply_wrapBOOST_MPL_ASSERT(( is_same<r52,int> ));
 
- - - + + diff --git a/doc/refmanual/bitand.html b/doc/refmanual/bitand.html index 2b2d9ef..6422c6e 100644 --- a/doc/refmanual/bitand.html +++ b/doc/refmanual/bitand.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: bitand_ @@ -15,8 +12,8 @@ Front Page / Metafunctions / Bitwise Operations / bitand_
-

bitand_

-
+

bitand_

+

Synopsis

 template<
@@ -32,58 +29,59 @@ struct bitand_
 };
 
-
+

Description

Returns the result of bitwise and (&) operation of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2,... TnIntegral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1,c2,... cn:

+

For any Integral Constants c1,c2,... cn:

-typedef bitand_<c1,...cn>::type r; 
+typedef bitand_<c1,...cn>::type r;
 
- +
- + @@ -102,11 +100,12 @@ typedef bitand_<c,c3,... typedef bitand_<c1,...cn> r; -
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -91,8 +89,8 @@ typedef integral_c<
       typeof(c1::value & c2::value)
     , ( c1::value & c2::value )
     > c;
-    
-typedef bitand_<c,c3,...cn>::type r; 
+
+typedef bitand_<c,c3,...cn>::type r;
 
+
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -117,11 +116,11 @@ struct r : bitand_<c1,...<
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef integral_c<unsigned,0> u0;
@@ -138,15 +137,16 @@ typedef integral_c<unsigne
 BOOST_MPL_ASSERT_RELATION( (bitand_<u8,uffffffff>::value), ==, 8 );
 
- - + diff --git a/doc/refmanual/bitor.html b/doc/refmanual/bitor.html index 7149b6e..44388a1 100644 --- a/doc/refmanual/bitor.html +++ b/doc/refmanual/bitor.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: bitor_ @@ -15,8 +12,8 @@ Front Page / Metafunctions / Bitwise Operations / bitor_
-

bitor_

-
+

bitor_

+

Synopsis

 template<
@@ -32,58 +29,59 @@ struct bitor_
 };
 
-
+

Description

Returns the result of bitwise or (|) operation of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2,... TnIntegral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1,c2,... cn:

+

For any Integral Constants c1,c2,... cn:

-typedef bitor_<c1,...cn>::type r; 
+typedef bitor_<c1,...cn>::type r;
 
- +
- + @@ -102,11 +100,12 @@ typedef bitor_<c,c3,... typedef bitor_<c1,...cn> r; -
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -91,8 +89,8 @@ typedef integral_c<
       typeof(c1::value | c2::value)
     , ( c1::value | c2::value )
     > c;
-    
-typedef bitor_<c,c3,...cn>::type r; 
+
+typedef bitor_<c,c3,...cn>::type r;
 
+
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -117,11 +116,11 @@ struct r : bitor_<c1,...
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef integral_c<unsigned,0> u0;
@@ -138,15 +137,16 @@ typedef integral_c<unsigne
 BOOST_MPL_ASSERT_RELATION( (bitor_<u8,uffffffff>::value), ==, 0xffffffff );
 
- - + diff --git a/doc/refmanual/bitwise-operations.html b/doc/refmanual/bitwise-operations.html index 60d519f..0bf1fc7 100644 --- a/doc/refmanual/bitwise-operations.html +++ b/doc/refmanual/bitwise-operations.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Bitwise Operations @@ -15,19 +12,20 @@ Front Page / Metafunctions / Bitwise Operations
- + diff --git a/doc/refmanual/bitxor.html b/doc/refmanual/bitxor.html index 08b5d44..84b1a5e 100644 --- a/doc/refmanual/bitxor.html +++ b/doc/refmanual/bitxor.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: bitxor_ @@ -15,8 +12,8 @@ Front Page / Metafunctions / Bitwise Operations / bitxor_
-

bitxor_

-
+

bitxor_

+

Synopsis

 template<
@@ -32,58 +29,59 @@ struct bitxor_
 };
 
-
+

Description

Returns the result of bitwise xor (^) operation of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2,... TnIntegral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1,c2,... cn:

+

For any Integral Constants c1,c2,... cn:

-typedef bitxor_<c1,...cn>::type r; 
+typedef bitxor_<c1,...cn>::type r;
 
- +
- + @@ -102,11 +100,12 @@ typedef bitxor_<c,c3,... typedef bitxor_<c1,...cn> r; -
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -91,8 +89,8 @@ typedef integral_c<
       typeof(c1::value ^ c2::value)
     , ( c1::value ^ c2::value )
     > c;
-    
-typedef bitxor_<c,c3,...cn>::type r; 
+
+typedef bitxor_<c,c3,...cn>::type r;
 
+
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -117,11 +116,11 @@ struct r : bitxor_<c1,...<
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef integral_c<unsigned,0> u0;
@@ -139,15 +138,16 @@ typedef integral_c<unsigne
 BOOST_MPL_ASSERT_RELATION( (bitxor_<u8,uffffffff>::value), ==, 0xffffffff ^ 8 );
 
- - + diff --git a/doc/refmanual/bool.html b/doc/refmanual/bool.html index 6fd40d3..86a41ae 100644 --- a/doc/refmanual/bool.html +++ b/doc/refmanual/bool.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: bool_ @@ -15,8 +12,8 @@ Front Page / Data Types / Numeric / bool_
-

bool_

-
+

bool_

+

Synopsis

 template<
@@ -28,36 +25,36 @@ struct bool_
     // ...
 };
 
-typedef bool_<true>  true_;
-typedef bool_<false> false_;
+typedef bool_<true>  true_;
+typedef bool_<false> false_;
 
-
+

Description

-

A boolean Integral Constant wrapper.

+

A boolean Integral Constant wrapper.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -68,48 +65,49 @@ typedef bool_<false> false_;
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Integral Constant.

+where they differ from, or are not defined in Integral Constant.

For arbitrary integral constant c:

- +
- - + + -
ExpressionSemantics
ExpressionSemantics
bool_<c>An Integral Constant x such that x::value == c +An Integral Constant x such that x::value == c and x::value_type is identical to bool.
-
+

Example

 BOOST_MPL_ASSERT(( is_same< bool_<true>::value_type, bool > ));
-BOOST_MPL_ASSERT(( is_same< bool_<true>, true_ > )); }
+BOOST_MPL_ASSERT(( is_same< bool_<true>, true_ > )); }
 BOOST_MPL_ASSERT(( is_same< bool_<true>::type, bool_<true> > ));
 BOOST_MPL_ASSERT_RELATION( bool_<true>::value, ==, true );
 assert( bool_<true>() == true );
 
- - + diff --git a/doc/refmanual/broken-compiler.html b/doc/refmanual/broken-compiler-workarounds.html similarity index 73% rename from doc/refmanual/broken-compiler.html rename to doc/refmanual/broken-compiler-workarounds.html index 66b9f37..26ccdc0 100644 --- a/doc/refmanual/broken-compiler.html +++ b/doc/refmanual/broken-compiler-workarounds.html @@ -1,28 +1,27 @@ - - - - + The MPL Reference Manual: Broken Compiler Workarounds - +
Front Page / Macros / Broken Compiler WorkaroundsFront Page / Macros / Broken Compiler Workarounds
-
-

Broken Compiler Workarounds

- + - + diff --git a/doc/refmanual/categorized-concepts.html b/doc/refmanual/categorized-concepts.html deleted file mode 100644 index 5bfa9a3..0000000 --- a/doc/refmanual/categorized-concepts.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - -The MPL Reference Manual: Concepts - - - - - -
Front Page / Categorized Index / Concepts
- - - - - - diff --git a/doc/refmanual/categorized-index-concepts.html b/doc/refmanual/categorized-index-concepts.html new file mode 100644 index 0000000..a7fc505 --- /dev/null +++ b/doc/refmanual/categorized-index-concepts.html @@ -0,0 +1,48 @@ + + + + + + +The MPL Reference Manual: Concepts + + + + + +
Front Page / Categorized Index / Concepts
+ + + + + + diff --git a/doc/refmanual/categorized-index.html b/doc/refmanual/categorized-index.html index 3177e96..b5ace2a 100644 --- a/doc/refmanual/categorized-index.html +++ b/doc/refmanual/categorized-index.html @@ -1,28 +1,27 @@ - - - - + The MPL Reference Manual: Categorized Index - +
Front Page / Categorized Index
- - + + diff --git a/doc/refmanual/cfg-no-has-xxx.html b/doc/refmanual/cfg-no-has-xxx.html index 8c30d5e..f3f8455 100644 --- a/doc/refmanual/cfg-no-has-xxx.html +++ b/doc/refmanual/cfg-no-has-xxx.html @@ -1,43 +1,41 @@ - - - - + The MPL Reference Manual: BOOST_MPL_CFG_NO_HAS_XXX - +
Front Page / Macros / Configuration / BOOST_MPL_CFG_NO_HAS_XXX
-
-

BOOST_MPL_CFG_NO_HAS_XXX

-
+
+

BOOST_MPL_CFG_NO_HAS_XXX

+ -
+

Description

-

BOOST_MPL_CFG_NO_HAS_XXX is an boolean configuration macro -signaling availability of the BOOST_MPL_HAS_XXX_TRAIT_DEF / -BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF introspection macros' functionality +

BOOST_MPL_CFG_NO_HAS_XXX is an boolean configuration macro +signaling availability of the BOOST_MPL_HAS_XXX_TRAIT_DEF / +BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF introspection macros' functionality on a particular compiler.

- - - + + diff --git a/doc/refmanual/cfg-no-preprocessed.html b/doc/refmanual/cfg-no-preprocessed-headers.html similarity index 64% rename from doc/refmanual/cfg-no-preprocessed.html rename to doc/refmanual/cfg-no-preprocessed-headers.html index 5a697cd..fedb49c 100644 --- a/doc/refmanual/cfg-no-preprocessed.html +++ b/doc/refmanual/cfg-no-preprocessed-headers.html @@ -1,49 +1,47 @@ - - - - + The MPL Reference Manual: BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - +
Front Page / Macros / Configuration / BOOST_MPL_CFG_NO_PREPROCESSED_HEADERSFront Page / Macros / Configuration / BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-
-

BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS

-
-

Synopsis

+
+

BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS

+ -
+

Description

-

BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS is an boolean configuration macro +

BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS is an boolean configuration macro regulating library's internal use of preprocessed headers. When defined, it -instructs the MPL to discard the pre-generated headers found in -boost/mpl/aux_/preprocessed directory and use preprocessor -metaprogramming techniques to generate the necessary versions of the +instructs the MPL to discard the pre-generated headers found in +boost/mpl/aux_/preprocessed directory and use preprocessor +metaprogramming techniques to generate the necessary versions of the library components on the fly.

In this implementation of the library, the macro is not defined by default. -To change the default configuration, define -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS before including any library +To change the default configuration, define +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS before including any library header.

- - + diff --git a/doc/refmanual/classes.html b/doc/refmanual/classes.html index d55bbb6..a7f370e 100644 --- a/doc/refmanual/classes.html +++ b/doc/refmanual/classes.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Classes @@ -15,27 +12,29 @@ Front Page / Sequences / Classes
-

Classes

-

The MPL provides a large number of predefined general-purpose sequence +

Classes

+

The MPL provides a large number of predefined general-purpose sequence classes covering most of the typical metaprogramming needs out-of-box.

- -
- + diff --git a/doc/refmanual/clear.html b/doc/refmanual/clear.html index 312941c..6414fd3 100644 --- a/doc/refmanual/clear.html +++ b/doc/refmanual/clear.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: clear @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / clear
-

clear

-
+

clear

+

Synopsis

 template<
@@ -28,71 +25,73 @@ struct clear
 };
 
-
+

Description

-

Returns an empty sequence concept-identical to Sequence.

+

Returns an empty sequence concept-identical to Sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceExtensible Sequence or -Extensible Associative SequenceExtensible Sequence or +Extensible Associative Sequence A sequence to get an empty "copy" of.
-
+

Expression semantics

-

For any Extensible Sequence or Extensible Associative Sequence s:

+

For any Extensible Sequence or Extensible Associative Sequence s:

-typedef clear<s>::type t; 
+typedef clear<s>::type t;
 
- +
- + - +
Return type:Extensible Sequence or Extensible Associative Sequence.
Return type:

Extensible Sequence or Extensible Associative Sequence.

+
Semantics:

Equivalent to

-
+
 typedef erase< s, begin<s>::type, end<s>::type >::type t;
 
Postcondition:empty<s>::value == true.
Postcondition:

empty<s>::value == true.

+
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef vector_c<int,1,3,5,7,9,11> odds;
@@ -101,15 +100,16 @@ typedef clear<odds>::type no
 BOOST_MPL_ASSERT(( empty<nothing> ));
 
- - + diff --git a/doc/refmanual/comparisons.html b/doc/refmanual/comparisons.html index c907577..8d63c6b 100644 --- a/doc/refmanual/comparisons.html +++ b/doc/refmanual/comparisons.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Comparisons @@ -15,20 +12,21 @@ Front Page / Metafunctions / Comparisons
- + diff --git a/doc/refmanual/components.html b/doc/refmanual/components.html index 3ab4556..0e059f8 100644 --- a/doc/refmanual/components.html +++ b/doc/refmanual/components.html @@ -1,176 +1,180 @@ - - - - + The MPL Reference Manual: Components - +
Front Page / Categorized Index / Components
-

Components

-
- - + + diff --git a/doc/refmanual/composition-and-argument.html b/doc/refmanual/composition-and-argument-binding.html similarity index 64% rename from doc/refmanual/composition-and-argument.html rename to doc/refmanual/composition-and-argument-binding.html index ebc369a..7467046 100644 --- a/doc/refmanual/composition-and-argument.html +++ b/doc/refmanual/composition-and-argument-binding.html @@ -1,34 +1,32 @@ - - - - + The MPL Reference Manual: Composition and Argument Binding - +
Front Page / Metafunctions / Composition and Argument BindingFront Page / Metafunctions / Composition and Argument Binding
-
-

Composition and Argument Binding

- - + - + diff --git a/doc/refmanual/concepts.html b/doc/refmanual/concepts.html index 5cf4d05..a5b78c8 100644 --- a/doc/refmanual/concepts.html +++ b/doc/refmanual/concepts.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Concepts @@ -15,15 +12,15 @@ Front Page / Sequences / Concepts
-

Concepts

-

The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL -Iterators, with two additional classification dimensions: +

Concepts

+

The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL +Iterators, with two additional classification dimensions: extensibility and associativeness.

- -
- + diff --git a/doc/refmanual/configuration.html b/doc/refmanual/configuration.html index 6ab24ee..35a5461 100644 --- a/doc/refmanual/configuration.html +++ b/doc/refmanual/configuration.html @@ -1,36 +1,35 @@ - - - - + The MPL Reference Manual: Configuration - +
Front Page / Macros / Configuration
- - + + diff --git a/doc/refmanual/contains.html b/doc/refmanual/contains.html index 0f6a84b..9e26f53 100644 --- a/doc/refmanual/contains.html +++ b/doc/refmanual/contains.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: contains @@ -15,8 +12,8 @@ Front Page / Algorithms / Querying Algorithms / contains
-

contains

-
+

contains

+

Synopsis

 template<
@@ -29,34 +26,34 @@ struct contains
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if one or more elements in Sequence +

Returns a true-valued Integral Constant if one or more elements in Sequence are identical to T.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -66,21 +63,22 @@ are identical to T.

ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
T
-
+

Expression semantics

-

For any Forward Sequence s and arbitrary type t:

+

For any Forward Sequence s and arbitrary type t:

 typedef contains<s,t>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

-typedef not_< is_same< 
+typedef not_< is_same<
       find<s,t>::type
     , end<s>::type
     > >::type r;
@@ -90,26 +88,27 @@ typedef not_< is_same<
 
-
+

Complexity

Linear. At most size<s>::value comparisons for identity.

-
+

Example

 typedef vector<char,int,unsigned,long,unsigned long> types;
 BOOST_MPL_ASSERT_NOT(( contains<types,bool> ));
 
- - + diff --git a/doc/refmanual/copy-if.html b/doc/refmanual/copy-if.html index 4f74d59..b200b20 100644 --- a/doc/refmanual/copy-if.html +++ b/doc/refmanual/copy-if.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: copy_if @@ -15,8 +12,8 @@ Front Page / Algorithms / Transformation Algorithms / copy_if
-

copy_if

-
+

copy_if

+

Synopsis

 template<
@@ -30,68 +27,69 @@ struct copy_if
 };
 
-
+

Description

-

Returns a filtered copy of the original sequence containing the elements that satisfy +

Returns a filtered copy of the original sequence containing the elements that satisfy the predicate Pred.

-

[Note: This wording applies to a no-inserter version(s) of the algorithm. See the -Expression semantics subsection for a precise specification of the algorithm's +

[Note: This wording applies to a no-inserter version(s) of the algorithm. See the +Expression semantics subsection for a precise specification of the algorithm's details in all cases — end note]

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to copy.
PredUnary Lambda ExpressionUnary Lambda Expression A copying condition.
InInserterInserter An inserter.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Reversible Algorithm.

-

For any Forward Sequence s, an unary Lambda Expression pred, and -an Inserter in:

+where they differ from, or are not defined in Reversible Algorithm.

+

For any Forward Sequence s, an unary Lambda Expression pred, and +an Inserter in:

-typedef copy_if<s,pred,in>::type r; 
+typedef copy_if<s,pred,in>::type r;
 
- +
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

@@ -102,9 +100,9 @@ typedef fold<
       s
     , in::state
     , eval_if<
-          apply_wrap1<p,_2>
-        , apply_wrap2<op,_1,_2>
-        , identity<_1>
+          apply_wrap1<p,_2>
+        , apply_wrap2<op,_1,_2>
+        , identity<_1>
         >
     >::type r;
 
@@ -113,17 +111,17 @@ typedef fold<
-
+

Complexity

-

Linear. Exactly size<s>::value applications of pred, and at +

Linear. Exactly size<s>::value applications of pred, and at most size<s>::value applications of in::operation.

-
+

Example

 typedef copy_if<
       range_c<int,0,10>
-    , less< _1, int_<5> >
+    , less< _1, int_<5> >
     , back_inserter< vector<> >
     >::type result;
 
@@ -131,15 +129,16 @@ typedef copy_if<
 BOOST_MPL_ASSERT(( equal<result,range_c<int,0,5> > ));
 
- - + diff --git a/doc/refmanual/copy.html b/doc/refmanual/copy.html index fd046d0..5d1f3fd 100644 --- a/doc/refmanual/copy.html +++ b/doc/refmanual/copy.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: copy @@ -15,8 +12,8 @@ Front Page / Algorithms / Transformation Algorithms / copy
-

copy

-
+

copy

+

Synopsis

 template<
@@ -29,62 +26,63 @@ struct copy
 };
 
-
+

Description

Returns a copy of the original sequence.

-

[Note: This wording applies to a no-inserter version(s) of the algorithm. See the -Expression semantics subsection for a precise specification of the algorithm's +

[Note: This wording applies to a no-inserter version(s) of the algorithm. See the +Expression semantics subsection for a precise specification of the algorithm's details in all cases — end note]

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to copy.
InInserterInserter An inserter.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Reversible Algorithm.

-

For any Forward Sequence s, and an Inserter in:

+where they differ from, or are not defined in Reversible Algorithm.

+

For any Forward Sequence s, and an Inserter in:

-typedef copy<s,in>::type r; 
+typedef copy<s,in>::type r;
 
- +
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

@@ -95,11 +93,11 @@ typedef fold< s,in::state,in::op
 
-
+

Complexity

Linear. Exactly size<s>::value applications of in::operation.

-
+

Example

 typedef vector_c<int,0,1,2,3,4,5,6,7,8,9> numbers;
@@ -112,15 +110,16 @@ typedef copy<
 BOOST_MPL_ASSERT(( equal< result,range_c<int,0,20> > ));
 
- - + diff --git a/doc/refmanual/count-if.html b/doc/refmanual/count-if.html index 3b3aba7..51b3139 100644 --- a/doc/refmanual/count-if.html +++ b/doc/refmanual/count-if.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: count_if @@ -15,8 +12,8 @@ Front Page / Algorithms / Querying Algorithms / count_if
-

count_if

-
+

count_if

+

Synopsis

 template<
@@ -29,61 +26,62 @@ struct count_if
 };
 
-
+

Description

Returns the number of elements in Sequence that satisfy the predicate Pred.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
PredUnary Lambda ExpressionUnary Lambda Expression A count condition.
-
+

Expression semantics

-

For any Forward Sequence s and unary Lambda Expression pred:

+

For any Forward Sequence s and unary Lambda Expression pred:

-typedef count_if<s,pred>::type n; 
+typedef count_if<s,pred>::type n;
 
- +
- + @@ -91,29 +89,30 @@ typedef fold<
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

 typedef lambda<pred>::type p;
-typedef fold< 
+typedef fold<
       s
     , long_<0>
-    , if_< apply_wrap1<p,_2>, next<_1>, _1 >
+    , if_< apply_wrap1<p,_2>, next<_1>, _1 >
     >::type n;
 
-
+

Complexity

Linear. Exactly size<s>::value applications of pred.

-
+

Example

 typedef vector<int,char,long,short,char,long,double,long> types;
-    
+
 BOOST_MPL_ASSERT_RELATION( (count_if< types, is_float<_> >::value), ==, 1 );
 BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,char> >::value), ==, 2 );
 BOOST_MPL_ASSERT_RELATION( (count_if< types, is_same<_,void> >::value), ==, 0 );
 
- - + diff --git a/doc/refmanual/count.html b/doc/refmanual/count.html index 1b1dabe..d44e998 100644 --- a/doc/refmanual/count.html +++ b/doc/refmanual/count.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: count @@ -15,8 +12,8 @@ Front Page / Algorithms / Querying Algorithms / count
-

count

-
+

count

+

Synopsis

 template<
@@ -29,33 +26,33 @@ struct count
 };
 
-
+

Description

Returns the number of elements in a Sequence that are identical to T.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -65,17 +62,18 @@ struct count
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
T
-
+

Expression semantics

-

For any Forward Sequence s and arbitrary type t:

+

For any Forward Sequence s and arbitrary type t:

 typedef count<s,t>::type n;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -86,11 +84,11 @@ typedef count_if< s,is_same&
 
-
+

Complexity

Linear. Exactly size<s>::value comparisons for identity.

-
+

Example

 typedef vector<int,char,long,short,char,short,double,long> types;
@@ -99,15 +97,16 @@ typedef count<types, short>:
 BOOST_MPL_ASSERT_RELATION( n::value, ==, 2 );
 
- - + diff --git a/doc/refmanual/data-miscellaneous.html b/doc/refmanual/data-miscellaneous.html deleted file mode 100644 index 1dd61ce..0000000 --- a/doc/refmanual/data-miscellaneous.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -The MPL Reference Manual: Miscellaneous - - - - - -
Front Page / Data Types / Miscellaneous
- - - - - - diff --git a/doc/refmanual/data-concepts.html b/doc/refmanual/data-types-concepts.html similarity index 73% rename from doc/refmanual/data-concepts.html rename to doc/refmanual/data-types-concepts.html index eb8898f..4d1cb26 100644 --- a/doc/refmanual/data-concepts.html +++ b/doc/refmanual/data-types-concepts.html @@ -1,28 +1,27 @@ - - - - + The MPL Reference Manual: Concepts - +
Front Page / Data Types / ConceptsFront Page / Data Types / Concepts
-
-

Concepts

- + - + diff --git a/doc/refmanual/data-types-miscellaneous.html b/doc/refmanual/data-types-miscellaneous.html new file mode 100644 index 0000000..d7bd85d --- /dev/null +++ b/doc/refmanual/data-types-miscellaneous.html @@ -0,0 +1,29 @@ + + + + + + +The MPL Reference Manual: Miscellaneous + + + + + +
Front Page / Data Types / Miscellaneous
+ + + + + + diff --git a/doc/refmanual/data-types.html b/doc/refmanual/data-types.html index 8d301ff..a7586a8 100644 --- a/doc/refmanual/data-types.html +++ b/doc/refmanual/data-types.html @@ -1,30 +1,28 @@ - - - - + The MPL Reference Manual: Data Types - +
Front Page / Data Types
- - + + diff --git a/doc/refmanual/deque.html b/doc/refmanual/deque.html index 7869f0d..c4384ba 100644 --- a/doc/refmanual/deque.html +++ b/doc/refmanual/deque.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: deque @@ -15,35 +12,35 @@ Front Page / Sequences / Classes / deque
-

deque

-
+

deque

+

Description

-

deque is a variadic, random access, extensible sequence of types that -supports constant-time insertion and removal of elements at both ends, and -linear-time insertion and removal of elements in the middle. In this implementation -of the library, deque is a synonym for vector.

+

deque is a variadic, random access, extensible sequence of types that +supports constant-time insertion and removal of elements at both ends, and +linear-time insertion and removal of elements in the middle. In this implementation +of the library, deque is a synonym for vector.

-
+ -
+ -
+

Expression semantics

-

See vector specification.

+

See vector specification.

-
+

Example

 typedef deque<float,double,long double> floats;
@@ -52,15 +49,16 @@ typedef push_back<floats,in
 BOOST_MPL_ASSERT(( is_same< at_c<types,3>::type, int > ));
 
- - + diff --git a/doc/refmanual/deref.html b/doc/refmanual/deref.html index cea8a9f..f4dd237 100644 --- a/doc/refmanual/deref.html +++ b/doc/refmanual/deref.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: deref @@ -15,8 +12,8 @@ Front Page / Iterators / Iterator Metafunctions / deref
-

deref

-
+

deref

+

Synopsis

 template<
@@ -28,54 +25,56 @@ struct deref
 };
 
-
+

Description

Dereferences an iterator.

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
IteratorForward IteratorForward Iterator The iterator to dereference.
-
+

Expression semantics

-

For any Forward Iterators iter:

+

For any Forward Iterators iter:

-typedef deref<iter>::type t; 
+typedef deref<iter>::type t;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:iter is dereferenceable.
Precondition:

iter is dereferenceable.

+
Semantics:

t is identical to the element referenced by iter. If iter is -a user-defined iterator, the library-provided default implementation is +a user-defined iterator, the library-provided default implementation is equivalent to

 typedef iter::type t;
@@ -85,11 +84,11 @@ typedef iter::type t;
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef vector<char,short,int,long> types;
@@ -98,15 +97,16 @@ typedef begin<types>::type i
 BOOST_MPL_ASSERT(( is_same< deref<iter>::type, char > ));
 
- - + diff --git a/doc/refmanual/distance.html b/doc/refmanual/distance.html index de0d3ab..ac8d196 100644 --- a/doc/refmanual/distance.html +++ b/doc/refmanual/distance.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: distance @@ -15,8 +12,8 @@ Front Page / Iterators / Iterator Metafunctions / distance
-

distance

-
+

distance

+

Synopsis

 template<
@@ -29,81 +26,84 @@ struct distance
 };
 
-
+

Description

-

Returns the distance between First and Last iterators, that is, an -Integral Constant n such that advance<First,n>::type is +

Returns the distance between First and Last iterators, that is, an +Integral Constant n such that advance<First,n>::type is identical to Last.

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
First, LastForward IteratorForward Iterator Iterators to compute a distance between.
-
+ -
+

Expression semantics

-

For any Forward Iterators first and last:

+

For any Forward Iterators first and last:

-typedef distance<first,last>::type n; 
+typedef distance<first,last>::type n;
 
- +
- + - + - +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Precondition:[first, last) is a valid range.
Precondition:

[first, last) is a valid range.

+
Semantics:

Equivalent to

-
+
 typedef iter_fold<
       iterator_range<first,last>
     , long_<0>
-    , next<_1>
+    , next<_1>
     >::type n;
 
Postcondition:is_same< advance<first,n>::type, last >::value == true.
Postcondition:

is_same< advance<first,n>::type, last >::value == true.

+
-
+

Complexity

-

Amortized constant time if first and last are Random Access Iterators, +

Amortized constant time if first and last are Random Access Iterators, otherwise linear time.

-
+

Example

 typedef range_c<int,0,10>::type range;
@@ -113,15 +113,16 @@ typedef end<range>::type last;
 BOOST_MPL_ASSERT_RELATION( (distance<first,last>::value), ==, 10);
 
- - + diff --git a/doc/refmanual/divides.html b/doc/refmanual/divides.html index 006a725..22e250a 100644 --- a/doc/refmanual/divides.html +++ b/doc/refmanual/divides.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: divides @@ -15,8 +12,8 @@ Front Page / Metafunctions / Arithmetic Operations / divides
-

divides

-
+

divides

+

Synopsis

 template<
@@ -32,60 +29,62 @@ struct divides
 };
 
-
+

Description

Returns the quotient of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2,... TnIntegral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1,c2,... cn:

+

For any Integral Constants c1,c2,... cn:

-typedef divides<c1,...cn>::type r; 
+typedef divides<c1,...cn>::type r;
 
- +
- + - + @@ -104,13 +103,15 @@ typedef divides<c,c3,...<
 typedef divides<c1,...cn> r;
 
-
Return type:Integral Constant.
Return type:

Integral Constant.

+
Precondition:c2::value != 0, ... cn::value != 0.
Precondition:

c2::value != 0, ... cn::value != 0.

+
Semantics:

Equivalent to

@@ -93,8 +92,8 @@ typedef integral_c<
       typeof(c1::value / c2::value)
     , ( c1::value / c2::value )
     > c;
-    
-typedef divides<c,c3,...cn>::type r; 
+
+typedef divides<c,c3,...cn>::type r;
 
+
- + - +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Precondition:c2::value != 0, ... cn::value != 0.
Precondition:

c2::value != 0, ... cn::value != 0.

+
Semantics:

Equivalent to

@@ -121,11 +122,11 @@ struct r : divides<c1,...
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef divides< int_<-10>, int_<3>, long_<1> >::type r;
@@ -133,15 +134,16 @@ typedef divides< BOOST_MPL_ASSERT(( is_same< r::value_type, long > ));
 
- - + diff --git a/doc/refmanual/empty-base.html b/doc/refmanual/empty-base.html index a8370b0..26159f3 100644 --- a/doc/refmanual/empty-base.html +++ b/doc/refmanual/empty-base.html @@ -1,47 +1,45 @@ - - - - + The MPL Reference Manual: empty_base - - +
Front Page / Data Types / Miscellaneous / empty_base
+
Front Page / Data Types / Miscellaneous / empty_base
-

empty_base

-
+

empty_base

+

Synopsis

 struct empty_base {};
 
-
+

Description

-

An empty base class. Inheritance from empty_base through the inherit +

An empty base class. Inheritance from empty_base through the inherit metafunction is a no-op.

-
+ - - - + + diff --git a/doc/refmanual/empty-sequence.html b/doc/refmanual/empty-sequence.html index d8a699c..132c795 100644 --- a/doc/refmanual/empty-sequence.html +++ b/doc/refmanual/empty-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: empty_sequence @@ -15,8 +12,8 @@ Front Page / Sequences / Views / empty_sequence
-

empty_sequence

-
+

empty_sequence

+

Synopsis

 struct empty_sequence
@@ -26,42 +23,42 @@ struct empty_sequence
 };
 
-
+

Description

Represents a sequence containing no elements.

-
+ -
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Random Access Sequence.

+where they differ from, or are not defined in Random Access Sequence.

In the following table, s is an instance of empty_sequence.

- +
- - + + - + - +
ExpressionSemantics
ExpressionSemantics
empty_sequenceAn empty Random Access Sequence.An empty Random Access Sequence.
size<s>::typesize<s>::value == 0; see Random Access Sequence.size<s>::value == 0; see Random Access Sequence.
-
+

Example

 typedef begin<empty_sequence>::type first;
@@ -78,15 +75,16 @@ typedef transform_view<
 BOOST_MPL_ASSERT_RELATION( size<empty_sequence>::value, ==, 0 );
 
- - + diff --git a/doc/refmanual/empty.html b/doc/refmanual/empty.html index 416946a..6086b3d 100644 --- a/doc/refmanual/empty.html +++ b/doc/refmanual/empty.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: empty @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / empty
-

empty

-
+

empty

+

Synopsis

 template<
@@ -28,54 +25,54 @@ struct empty
 };
 
-
+

Description

-

Returns an Integral Constant c such that c::value == true if +

Returns an Integral Constant c such that c::value == true if and only if the sequence is empty.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to test.
-
+

Expression semantics

-

For any Forward Sequence s:

+

For any Forward Sequence s:

-typedef empty<s>::type c; 
+typedef empty<s>::type c;
 
- +
- + @@ -84,11 +81,11 @@ typedef empty<s>::type c;
Return type:Boolean Integral Constant.
Return type:Boolean Integral Constant.
Semantics:Equivalent to typedef is_same< begin<s>::type,end<s>::type >::type c;.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef range_c<int,0,0> empty_range;
@@ -98,15 +95,16 @@ typedef vector<long,float,doub
 BOOST_MPL_ASSERT_NOT( empty<types> );
 
- - + diff --git a/doc/refmanual/end.html b/doc/refmanual/end.html index 6e8c9ba..0a5c39c 100644 --- a/doc/refmanual/end.html +++ b/doc/refmanual/end.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: end @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / end
-

end

-
+

end

+

Synopsis

 template<
@@ -28,33 +25,33 @@ struct end
 };
 
-
+

Description

-

Returns the sequence's past-the-end iterator. If the argument is not a -Forward Sequence, returns void_.

+

Returns the sequence's past-the-end iterator. If the argument is not a +Forward Sequence, returns void_.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -66,31 +63,31 @@ returned.
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For any arbitrary type x:

-typedef end<x>::type last; 
+typedef end<x>::type last;
 
- +
- + - +
Return type:Forward Iterator or void_.
Return type:Forward Iterator or void_.
Semantics:If x is Forward Sequence, last is an iterator pointing one past the -last element in s; otherwise last is void_.
Semantics:If x is Forward Sequence, last is an iterator pointing one past the +last element in s; otherwise last is void_.
Postcondition:If last is an iterator, it is past-the-end.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef vector<long> v;
@@ -100,15 +97,16 @@ typedef end<v>::type last;
 BOOST_MPL_ASSERT(( is_same< next<first>::type, last > ));
 
- - + diff --git a/doc/refmanual/equal-to.html b/doc/refmanual/equal-to.html index 67711c1..af51b46 100644 --- a/doc/refmanual/equal-to.html +++ b/doc/refmanual/equal-to.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: equal_to @@ -15,8 +12,8 @@ Front Page / Metafunctions / Comparisons / equal_to
-

equal_to

-
+

equal_to

+

Synopsis

 template<
@@ -29,58 +26,59 @@ struct equal_to
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if T1 and T2 are equal.

+

Returns a true-valued Integral Constant if T1 and T2 are equal.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

-typedef equal_to<c1,c2>::type r; 
+typedef equal_to<c1,c2>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -92,13 +90,14 @@ typedef bool_< (c1::value == c2:
 
-typedef equal_to<c1,c2> r; 
+typedef equal_to<c1,c2> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -109,11 +108,11 @@ struct r : equal_to<c1,c2>
 
-
+

Complexity

Amortized constant time.

-
+

Example

 BOOST_MPL_ASSERT_NOT(( equal_to< int_<0>, int_<10> > ));
@@ -121,15 +120,16 @@ struct r : equal_to<c1,c2>
 BOOST_MPL_ASSERT(( equal_to< long_<10>, int_<10> > ));
 
- - + diff --git a/doc/refmanual/equal.html b/doc/refmanual/equal.html index ef60e5a..5d87931 100644 --- a/doc/refmanual/equal.html +++ b/doc/refmanual/equal.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: equal @@ -15,14 +12,14 @@ Front Page / Algorithms / Querying Algorithms / equal
-

equal

-
+

equal

+

Synopsis

 template<
       typename Seq1
     , typename Seq2
-    , typename Pred = is_same<_1,_2>
+    , typename Pred = is_same<_1,_2>
     >
 struct equal
 {
@@ -30,56 +27,57 @@ struct equal
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if the two sequences Seq1 +

Returns a true-valued Integral Constant if the two sequences Seq1 and Seq2 are identical when compared element-by-element.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
Seq1, Seq2Forward SequenceForward Sequence Sequences to compare.
PredBinary Lambda ExpressionBinary Lambda Expression A comparison criterion.
-
+

Expression semantics

-

For any Forward Sequences s1 and s2 and a binary Lambda Expression pred:

+

For any Forward Sequences s1 and s2 and a binary Lambda Expression pred:

-typedef equal<s1,s2,pred>::type c; 
+typedef equal<s1,s2,pred>::type c;
 
- +
- + -
Return type:Integral Constant
Return type:

Integral Constant

+
Semantics:

c::value == true is and only if size<s1>::value == size<s2>::value +

Semantics:

c::value == true is and only if size<s1>::value == size<s2>::value and for every iterator i in [begin<s1>::type, end<s1>::type) deref<i>::type is identical to

 advance< begin<s2>::type, distance< begin<s1>::type,i >::type >::type
@@ -89,11 +87,11 @@ and for every iterator i in [<
 
-
+

Complexity

Linear. At most size<s1>::value comparisons.

-
+

Example

 typedef vector<char,int,unsigned,long,unsigned long> s1;
@@ -102,14 +100,15 @@ typedef list<char,int,unsigned,l
 BOOST_MPL_ASSERT(( equal<s1,s2> ));
 
- - + diff --git a/doc/refmanual/erase-key.html b/doc/refmanual/erase-key.html index eec2e22..7bf1e73 100644 --- a/doc/refmanual/erase-key.html +++ b/doc/refmanual/erase-key.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: erase_key @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / erase_key
-

erase_key

-
+

erase_key

+

Synopsis

 template<
@@ -29,38 +26,38 @@ struct erase_key
 };
 
-
+

Description

-

Erases elements associated with the key Key in the Extensible Associative Sequence +

Erases elements associated with the key Key in the Extensible Associative Sequence AssocSeq .

-
+ -
+ -
+

Parameters

- +
- - - + + + - + @@ -70,19 +67,19 @@ struct erase_key
ParameterRequirementDescription
ParameterRequirementDescription
AssocSeqExtensible Associative SequenceExtensible Associative Sequence A sequence to erase elements from.
Key
-
+

Expression semantics

-

For any Extensible Associative Sequence s, and arbitrary type key:

+

For any Extensible Associative Sequence s, and arbitrary type key:

-typedef erase_key<s,key>::type r; 
+typedef erase_key<s,key>::type r;
 
- +
- + - @@ -90,11 +87,11 @@ typedef erase_key<s,key>
Return type:Extensible Associative Sequence.
Return type:Extensible Associative Sequence.
Semantics:r is concept-identical and equivalent to s except that +
Semantics:r is concept-identical and equivalent to s except that has_key<r,k>::value == false.
Postcondition:size<r>::value == size<s>::value - 1.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef map< pair<int,unsigned>, pair<char,long> > m;
@@ -105,15 +102,16 @@ typedef erase_key<m,char>
 BOOST_MPL_ASSERT(( is_same< at<m1,int>::type,unsigned > ));
 
- - + diff --git a/doc/refmanual/erase.html b/doc/refmanual/erase.html index d7a3bee..f4804b2 100644 --- a/doc/refmanual/erase.html +++ b/doc/refmanual/erase.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: erase @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / erase
-

erase

-
+

erase

+

Synopsis

 template<
@@ -30,71 +27,74 @@ struct erase
 };
 
-
+

Description

-

erase performs a removal of one or more adjacent elements in the sequence +

erase performs a removal of one or more adjacent elements in the sequence starting from an arbitrary position.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceExtensible Sequence or -Extensible Associative SequenceExtensible Sequence or +Extensible Associative Sequence A sequence to erase from.
FirstForward IteratorForward Iterator An iterator to the beginning of the range to be erased.
LastForward IteratorForward Iterator An iterator past-the-end of the range to be erased.
-
+

Expression semantics

-

For any Extensible Sequence s, and iterators pos, first and last into s:

+

For any Extensible Sequence s, and iterators pos, first and last into s:

-typedef erase<s,first,last>::type r; 
+typedef erase<s,first,last>::type r;
 
- +
- + - + - +
Return type:Extensible Sequence.
Return type:

Extensible Sequence.

+
Precondition:[first,last) is a valid range in s.
Precondition:

[first,last) is a valid range in s.

+
Semantics:r is a new sequence, concept-identical to s, of the following elements: -[begin<s>::type, pos), [last, end<s>::type).
Semantics:

r is a new sequence, concept-identical to s, of the following elements: +[begin<s>::type, pos), [last, end<s>::type).

+
Postcondition:

The relative order of the elements in r is the same as in s;

@@ -108,13 +108,15 @@ typedef erase<s,first,last>:
 
 typedef erase<s,pos>::type r;
 
- +
- + - +
Return type:Extensible Sequence.
Return type:

Extensible Sequence.

+
Precondition:pos is a dereferenceable iterator in s.
Precondition:

pos is a dereferenceable iterator in s.

+
Semantics:

Equivalent to

@@ -126,15 +128,15 @@ typedef erase< s,pos,
-

For any Extensible Associative Sequence s, and iterator pos into s:

+

For any Extensible Associative Sequence s, and iterator pos into s:

 typedef erase<s,pos>::type r;
 
- +
- + @@ -147,29 +149,29 @@ typedef erase<s,pos>::type r
Return type:Extensible Sequence.
Return type:Extensible Sequence.
Precondition:pos is a dereferenceable iterator to s.
-
+

Complexity

- +
- - + + - + - +
Sequence archetypeComplexity (the range form)
Sequence archetypeComplexity (the range form)
Extensible Associative Sequence
Extensible Associative Sequence Amortized constant time.
Extensible Sequence
Extensible Sequence Quadratic in the worst case, linear at best.
-
+

Example

 typedef vector_c<int,1,0,5,1,7,5,0,5> values;
@@ -182,15 +184,16 @@ typedef find<result, BOOST_MPL_ASSERT(( is_same< iter, end<result>::type > ));
 
- - +
diff --git a/doc/refmanual/eval-if-c.html b/doc/refmanual/eval-if-c.html index 3dc6967..ab8e2cb 100644 --- a/doc/refmanual/eval-if-c.html +++ b/doc/refmanual/eval-if-c.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: eval_if_c @@ -15,11 +12,11 @@
Front Page / Metafunctions / Type Selection / eval_if_c
-

eval_if_c

-
+

eval_if_c

+

Synopsis

-template< 
+template<
       bool c
     , typename F1
     , typename F2
@@ -30,30 +27,30 @@ struct eval_if_c
 };
 
-
+

Description

-

Evaluates one of its two nullary-metafunction arguments, F1 or F2, depending -on the value of integral constant c. eval_if_c<c,f1,f2>::type is a shorcut +

Evaluates one of its two nullary-metafunction arguments, F1 or F2, depending +on the value of integral constant c. eval_if_c<c,f1,f2>::type is a shorcut notation for eval_if< bool_<c>,f1,f2 >::type.

-
+ -
+

Parameters

- +
- - - + + + @@ -62,19 +59,19 @@ notation for An evaluation condition. - +
ParameterRequirementDescription
ParameterRequirementDescription
F1, F2Nullary MetafunctionNullary Metafunction Metafunctions to select for evaluation from.
-
+

Expression semantics

-

For any integral constant c and nullary Metafunctions f1, f2:

+

For any integral constant c and nullary Metafunctions f1, f2:

 typedef eval_if_c<c,f1,f2>::type t;
 
- +
@@ -85,7 +82,7 @@ typedef eval_if_c<c,f1,f2&g
-
+

Example

 typedef eval_if_c< true, identity<char>, identity<long> >::type t1;
@@ -95,14 +92,15 @@ typedef eval_if_c< false, <
 BOOST_MPL_ASSERT(( is_same<t2,long> ));
 
- - + diff --git a/doc/refmanual/eval-if.html b/doc/refmanual/eval-if.html index ec68be3..2db39aa 100644 --- a/doc/refmanual/eval-if.html +++ b/doc/refmanual/eval-if.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: eval_if @@ -15,11 +12,11 @@ Front Page / Metafunctions / Type Selection / eval_if
-

eval_if

-
+

eval_if

+

Synopsis

-template< 
+template<
       typename C
     , typename F1
     , typename F2
@@ -30,80 +27,81 @@ struct eval_if
 };
 
-
+

Description

-

Evaluates one of its two nullary-metafunction arguments, F1 or F2, depending +

Evaluates one of its two nullary-metafunction arguments, F1 or F2, depending on the value C.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
CIntegral ConstantIntegral Constant An evaluation condition.
F1, F2Nullary MetafunctionNullary Metafunction Metafunctions to select for evaluation from.
-
+

Expression semantics

-

For any Integral Constant c and nullary Metafunctions f1, f2:

+

For any Integral Constant c and nullary Metafunctions f1, f2:

 typedef eval_if<c,f1,f2>::type t;
 
- +
-
Return type:Any type.
Semantics:If c::value == true, t is identical to f1::type; otherwise t is +
Semantics:If c::value == true, t is identical to f1::type; otherwise t is identical to f2::type.
-
+

Example

-typedef eval_if< true_, identity<char>, identity<long> >::type t1;
-typedef eval_if< false_, identity<char>, identity<long> >::type t2;
+typedef eval_if< true_, identity<char>, identity<long> >::type t1;
+typedef eval_if< false_, identity<char>, identity<long> >::type t2;
 
 BOOST_MPL_ASSERT(( is_same<t1,char> ));
 BOOST_MPL_ASSERT(( is_same<t2,long> ));
 
- - + diff --git a/doc/refmanual/extensible-associative.html b/doc/refmanual/extensible-associative-sequence.html similarity index 67% rename from doc/refmanual/extensible-associative.html rename to doc/refmanual/extensible-associative-sequence.html index 72cd230..8c5799a 100644 --- a/doc/refmanual/extensible-associative.html +++ b/doc/refmanual/extensible-associative-sequence.html @@ -1,81 +1,78 @@ - - - - + The MPL Reference Manual: Extensible Associative Sequence - +
Front Page / Sequences / Concepts / Extensible Associative SequenceFront Page / Sequences / Concepts / Extensible Associative Sequence
-
-

Extensible Associative Sequence

-
+
+

Extensible Associative Sequence

+

Description

-

An Extensible Associative Sequence is an Associative Sequence that supports -insertion and removal of elements. In contrast to Extensible Sequence, -Extensible Associative Sequence does not provide a mechanism for +

An Extensible Associative Sequence is an Associative Sequence that supports +insertion and removal of elements. In contrast to Extensible Sequence, +Extensible Associative Sequence does not provide a mechanism for inserting an element at a specific position.

-
+

Expression requirements

-

In the following table and subsequent specifications, s is an Associative Sequence, +

In the following table and subsequent specifications, s is an Associative Sequence, pos is an iterator into s, and x and k are arbitrary types.

-

In addition to the Associative Sequence requirements, the following must be met:

- +

In addition to the Associative Sequence requirements, the following must be met:

+
- - - + + + - + - + - + - + - +
ExpressionTypeComplexity
ExpressionTypeComplexity
insert<s,x>::typeExtensible Associative SequenceExtensible Associative Sequence Amortized constant time
insert<s,pos,x>::typeExtensible Associative SequenceExtensible Associative Sequence Amortized constant time
erase_key<s,k>::typeExtensible Associative SequenceExtensible Associative Sequence Amortized constant time
erase<s,pos>::typeExtensible Associative SequenceExtensible Associative Sequence Amortized constant time
clear<s>::typeExtensible Associative SequenceExtensible Associative Sequence Amortized constant time
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Associative Sequence.

- +where they differ from, or are not defined in Associative Sequence.

+
- - + + @@ -85,50 +82,51 @@ equivalent to s except that

at< r, key_type<s,x>::type >::type -

is identical to value_type<s,x>::type; see insert.

+

is identical to value_type<s,x>::type; see insert.

+see insert. +that has_key<r,k>::value == false; see erase_key. +erase_key<s, deref<pos>::type >::type; see erase. +clear.
ExpressionSemantics
ExpressionSemantics
insert<s,pos,x>::type Equivalent to insert<s,x>::type; pos is ignored; -see insert.
erase_key<s,k>::type Erases elements in s associated with the key k; the resulting sequence r is equivalent to s except -that has_key<r,k>::value == false; see erase_key.
erase<s,pos>::type Erases the element at a specific position; equivalent to -erase_key<s, deref<pos>::type >::type; see erase.
clear<s>::type An empty sequence concept-identical to s; see -clear.
+For any extensible associative sequence ``s`` the following invariants always hold: -->
-
+ - - + diff --git a/doc/refmanual/extensible-sequence.html b/doc/refmanual/extensible-sequence.html index b306889..00f0f13 100644 --- a/doc/refmanual/extensible-sequence.html +++ b/doc/refmanual/extensible-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Extensible Sequence @@ -15,63 +12,63 @@ Front Page / Sequences / Concepts / Extensible Sequence
-

Extensible Sequence

-
+

Extensible Sequence

+

Description

-

An Extensible Sequence is a sequence that supports insertion and removal of +

An Extensible Sequence is a sequence that supports insertion and removal of elements. Extensibility is orthogonal to sequence traversal characteristics.

-
+

Expression requirements

-

For any Extensible Sequence s, its iterators pos and last, -Forward Sequence r, and any type x, the following expressions must +

For any Extensible Sequence s, its iterators pos and last, +Forward Sequence r, and any type x, the following expressions must be valid:

- +
- - - + + + - + - + - + - + - +
ExpressionTypeComplexity
ExpressionTypeComplexity
insert<s,pos,x>::typeExtensible SequenceExtensible Sequence Unspecified
insert_range<s,pos,r>::typeExtensible SequenceExtensible Sequence Unspecified
erase<s,pos>::typeExtensible SequenceExtensible Sequence Unspecified
erase<s,pos,last>::typeExtensible SequenceExtensible Sequence Unspecified
clear<s>::typeExtensible SequenceExtensible Sequence Constant time
-
+

Expression semantics

- +
- - + + @@ -79,50 +76,51 @@ be valid:

+[pos, end<s>::type); see insert. +[pos, end<s>::type); see insert_range. +[next<pos>::type, end<s>::type); see erase. +[last, end<s>::type); see erase. +clear.
ExpressionSemantics
ExpressionSemantics
A new sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), x, -[pos, end<s>::type); see insert.
insert_range<s,pos,r>::type A new sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), [begin<r>::type, end<r>::type), -[pos, end<s>::type); see insert_range.
erase<s,pos>::type A new sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), -[next<pos>::type, end<s>::type); see erase.
erase<s,pos,last>::type A new sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), -[last, end<s>::type); see erase.
clear<s>::type An empty sequence concept-identical to s; see -clear.
-
+ - - + diff --git a/doc/refmanual/filter-view.html b/doc/refmanual/filter-view.html index 70552fd..c56dfe5 100644 --- a/doc/refmanual/filter-view.html +++ b/doc/refmanual/filter-view.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: filter_view @@ -15,8 +12,8 @@ Front Page / Sequences / Views / filter_view
-

filter_view

-
+

filter_view

+

Synopsis

 template<
@@ -30,62 +27,62 @@ struct filter_view
 };
 
-
+

Description

A view into a subset of Sequence's elements satisfying the predicate Pred.

-
+ -
+
-

Parameters

- +

Parameters

+
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to wrap.
PredUnary Lambda ExpressionUnary Lambda Expression A filtering predicate.
-
+

Expression semantics

-

Semantics of an expression is defined only where it differs from, or is not -defined in Forward Sequence.

-

In the following table, v is an instance of filter_view, s is an arbitrary -Forward Sequence, pred is an unary Lambda Expression.

- +

Semantics of an expression is defined only where it differs from, or is not +defined in Forward Sequence.

+

In the following table, v is an instance of filter_view, s is an arbitrary +Forward Sequence, pred is an unary Lambda Expression.

+
- - + + @@ -94,19 +91,19 @@ defined in Forward Sequence< filter_view<s,pred>::type - +linear complexity; see Forward Sequence.
ExpressionSemantics
ExpressionSemantics
A lazy Forward Sequence sequence of all the elements in +A lazy Forward Sequence sequence of all the elements in the range [begin<s>::type, end<s>::type) that satisfy the predicate pred.
size<v>::type The size of v; size<v>::value == count_if<s,pred>::value; -linear complexity; see Forward Sequence.
-
+

Example

Find the largest floating type in a sequence.

@@ -118,15 +115,16 @@ typedef max_element<
 BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, long double > ));
 
- - + diff --git a/doc/refmanual/find-if.html b/doc/refmanual/find-if.html index 3d1932d..80a4150 100644 --- a/doc/refmanual/find-if.html +++ b/doc/refmanual/find-if.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: find_if @@ -15,8 +12,8 @@ Front Page / Algorithms / Querying Algorithms / find_if
-

find_if

-
+

find_if

+

Synopsis

 template<
@@ -29,54 +26,55 @@ struct find_if
 };
 
-
+

Description

-

Returns an iterator to the first element in Sequence that satisfies +

Returns an iterator to the first element in Sequence that satisfies the predicate Pred.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to search in.
PredUnary Lambda ExpressionUnary Lambda Expression A search condition.
-
+

Expression semantics

-

For any Forward Sequence s and unary Lambda Expression pred:

+

For any Forward Sequence s and unary Lambda Expression pred:

-typedef find_if<s,pred>::type i; 
+typedef find_if<s,pred>::type i;
 
- +
- +
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Semantics:

i is the first iterator in the range [begin<s>::type, end<s>::type) such that

@@ -88,29 +86,30 @@ typedef find_if<s,pred>::t
 
-
+

Complexity

Linear. At most size<s>::value applications of pred.

-
+

Example

 typedef vector<char,int,unsigned,long,unsigned long> types;
-typedef find_if<types, is_same<_1,unsigned> >::type iter;
+typedef find_if<types, is_same<_1,unsigned> >::type iter;
 
 BOOST_MPL_ASSERT(( is_same< deref<iter>::type, unsigned > ));
 BOOST_MPL_ASSERT_RELATION( iter::pos::value, ==, 2 );
 
- - + diff --git a/doc/refmanual/find.html b/doc/refmanual/find.html index dfa3352..47cd578 100644 --- a/doc/refmanual/find.html +++ b/doc/refmanual/find.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: find @@ -15,8 +12,8 @@ Front Page / Algorithms / Querying Algorithms / find
-

find

-
+

find

+

Synopsis

 template<
@@ -29,33 +26,33 @@ struct find
 };
 
-
+

Description

Returns an iterator to the first occurrence of type T in a Sequence.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -65,17 +62,18 @@ struct find
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to search in.
T
-
+

Expression semantics

-

For any Forward Sequence s and arbitrary type t:

+

For any Forward Sequence s and arbitrary type t:

 typedef find<s,t>::type i;
 
- +
- +
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Semantics:

Equivalent to

@@ -86,11 +84,11 @@ typedef find_if<s, is_same<
 
-
+

Complexity

Linear. At most size<s>::value comparisons for identity.

-
+

Example

 typedef vector<char,int,unsigned,long,unsigned long> types;
@@ -100,15 +98,16 @@ typedef find<types,unsigned>:
 BOOST_MPL_ASSERT_RELATION( iter::pos::value, ==, 2 );
 
- - + diff --git a/doc/refmanual/fold.html b/doc/refmanual/fold.html index 7d2870c..0296ce5 100644 --- a/doc/refmanual/fold.html +++ b/doc/refmanual/fold.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: fold @@ -15,8 +12,8 @@ Front Page / Algorithms / Iteration Algorithms / fold
-

fold

-
+

fold

+

Synopsis

 template<
@@ -30,35 +27,35 @@ struct fold
 };
 
-
+

Description

-

Returns the result of the successive application of binary ForwardOp to the -result of the previous ForwardOp invocation (State if it's the first call) +

Returns the result of the successive application of binary ForwardOp to the +result of the previous ForwardOp invocation (State if it's the first call) and every element of the sequence in the range [begin<Sequence>::type, end<Sequence>::type) in order.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -67,60 +64,66 @@ and every element of the sequence in the range [ - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to iterate.
State
ForwardOpBinary Lambda ExpressionBinary Lambda Expression The operation to be executed on forward traversal.
-
+

Expression semantics

-

For any Forward Sequence s, binary Lambda Expression op, and arbitrary type state:

+

For any Forward Sequence s, binary Lambda Expression op, and arbitrary type state:

-typedef fold<s,state,op>::type t; 
+typedef fold<s,state,op>::type t;
 
- +
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

-typedef iter_fold< s,state,apply<op,_1,deref<_2> > >::type t; 
+typedef iter_fold<
+      s
+    , state
+    , apply_wrap2< lambda<op>::type, _1, deref<_2> >
+    >::type t;
 
-
+

Complexity

Linear. Exactly size<s>::value applications of op.

-
+

Example

 typedef vector<long,float,short,double,float,long,long double> types;
 typedef fold<
       types
     , int_<0>
-    , if_< is_float<_2>,next<_1>,_1 >
+    , if_< is_float<_2>,next<_1>,_1 >
     >::type number_of_floats;
 
 BOOST_MPL_ASSERT_RELATION( number_of_floats::value, ==, 4 );
 
- - + diff --git a/doc/refmanual/for-each.html b/doc/refmanual/for-each.html index 413345f..28b5d54 100644 --- a/doc/refmanual/for-each.html +++ b/doc/refmanual/for-each.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: for_each @@ -15,8 +12,8 @@ Front Page / Algorithms / Runtime Algorithms / for_each
-

for_each

-
+

for_each

+

Synopsis

 template<
@@ -33,7 +30,7 @@ template<
 void for_each( F f );
 
-
+

Description

for_each is a family of overloaded function templates:

    @@ -44,68 +41,69 @@ object f to the result of the every element in the [begin<Sequence>::type, end<Sequence>::type) range.
-
+ -
+

Parameters

- +
- - - + + + - + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to iterate.
TransformOpLambda ExpressionLambda Expression A transformation.
fAn unary function objectAn unary function object A runtime operation to apply.
-
+

Expression semantics

-

For any Forward Sequence s, Lambda Expression op , and an -unary function object f:

+

For any Forward Sequence s, Lambda Expression op , and an +unary function object f:

 for_each<s>( f );
 
- +
- +
Return type:void
Return type:

void

+
Postcondition:

Equivalent to

 typedef begin<Sequence>::type i1;
-value_initialized< deref<i1>::type > x1;
+value_initialized< deref<i1>::type > x1;
 f(boost::get(x1));
 
 typedef next<i1>::type i2;
-value_initialized< deref<i2>::type > x2;
+value_initialized< deref<i2>::type > x2;
 f(boost::get(x2));
 ...
-value_initialized< deref<in>::type > xn;
+value_initialized< deref<in>::type > xn;
 f(boost::get(xn));
-typedef next<in>::type last; 
+typedef next<in>::type last;
 

where n == size<s>::value and last is identical to end<s>::type; no effect if empty<s>::value == true.

@@ -116,11 +114,12 @@ typedef next<in>::
 for_each<s,op>( f );
 
- +
- +
Return type:void
Return type:

void

+
Postcondition:

Equivalent to

@@ -131,11 +130,11 @@ typedef next<in>::
 
-
+

Complexity

Linear. Exactly size<s>::value applications of op and f.

-
+

Example

 struct value_printer
@@ -152,14 +151,15 @@ int main()
 }
 
- - +
diff --git a/doc/refmanual/forward-iterator.html b/doc/refmanual/forward-iterator.html index 224be44..0d193c7 100644 --- a/doc/refmanual/forward-iterator.html +++ b/doc/refmanual/forward-iterator.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Forward Iterator @@ -15,48 +12,48 @@ Front Page / Iterators / Concepts / Forward Iterator
-

Forward Iterator

-
+

Forward Iterator

+

Description

-

A Forward Iterator i is a type that represents a positional reference -to an element of a Forward Sequence. It allows to access the element through -a dereference operation, and provides a way to obtain an iterator to +

A Forward Iterator i is a type that represents a positional reference +to an element of a Forward Sequence. It allows to access the element through +a dereference operation, and provides a way to obtain an iterator to the next element in a sequence.

-
-
+

Definitions

  • An iterator can be dereferenceable, meaning that deref<i>::type is a well-defined expression.
  • -
  • An iterator is past-the-end if it points beyond the last element of a +
  • An iterator is past-the-end if it points beyond the last element of a sequence; past-the-end iterators are non-dereferenceable.
  • -
  • An iterator i is incrementable if there is a "next" iterator, that -is, if next<i>::type expression is well-defined; past-the-end iterators are +
  • An iterator i is incrementable if there is a "next" iterator, that +is, if next<i>::type expression is well-defined; past-the-end iterators are not incrementable.
  • Two iterators into the same sequence are equivalent if they have the same type.
  • -
  • An iterator j is reachable from an iterator i if , after recursive -application of next metafunction to i a finite number of times, i +
  • An iterator j is reachable from an iterator i if , after recursive +application of next metafunction to i a finite number of times, i is equivalent to j.
  • -
  • The notation [i,j) refers to a range of iterators beginning with +
  • The notation [i,j) refers to a range of iterators beginning with i and up to but not including j.
  • The range [i,j) is a valid range if j is reachable from i.
-
+

Expression requirements

- +
- - - + + + @@ -65,23 +62,23 @@ is equivalent to j. - + -
ExpressionTypeComplexity
ExpressionTypeComplexity
Amortized constant time
next<i>::typeForward IteratorForward Iterator Amortized constant time
i::categoryIntegral Constant, convertible +Integral Constant, convertible to forward_iterator_tag Constant time
-
+

Expression semantics

 typedef deref<i>::type j;
 
- +
@@ -95,7 +92,7 @@ typedef deref<i>::type j;
 typedef next<i>::type j;
 
-
+
@@ -111,7 +108,7 @@ typedef next<i>::type j;
 typedef i::category c;
 
-
+
@@ -120,31 +117,32 @@ typedef i::category c;
-
+

Invariants

For any forward iterators i and j the following invariants always hold:

    -
  • i and j are equivalent if and only if they are pointing to the same +
  • i and j are equivalent if and only if they are pointing to the same element.
  • -
  • If i is dereferenceable, and j is equivalent to i, then j is +
  • If i is dereferenceable, and j is equivalent to i, then j is dereferenceable as well.
  • -
  • If i and j are equivalent and dereferenceable, then deref<i>::type +
  • If i and j are equivalent and dereferenceable, then deref<i>::type and deref<j>::type are identical.
  • -
  • If i is incrementable, and j is equivalent to i, then j is +
  • If i is incrementable, and j is equivalent to i, then j is incrementable as well.
  • -
  • If i and j are equivalent and incrementable, then next<i>::type +
  • If i and j are equivalent and incrementable, then next<i>::type and next<j>::type are equivalent.
- - + diff --git a/doc/refmanual/forward-sequence.html b/doc/refmanual/forward-sequence.html index dbb8f58..0d20043 100644 --- a/doc/refmanual/forward-sequence.html +++ b/doc/refmanual/forward-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Forward Sequence @@ -15,54 +12,54 @@ Front Page / Sequences / Concepts / Forward Sequence
-

Forward Sequence

+

Forward Sequence

-

Description

-

A Forward Sequence is an MPL concept representing a compile-time sequence of -elements. Sequence elements are -types, and are accessible through Iterators. The begin and end metafunctions -provide iterators delimiting the range of the sequence -elements. A sequence guarantees that its elements are arranged in a definite, -but possibly unspecified, order. Every MPL sequence is a Forward Sequence.

+

Description

+

A Forward Sequence is an MPL concept representing a compile-time sequence of +elements. Sequence elements are +types, and are accessible through Iterators. The begin and end metafunctions +provide iterators delimiting the range of the sequence +elements. A sequence guarantees that its elements are arranged in a definite, +but possibly unspecified, order. Every MPL sequence is a Forward Sequence.

-

Definitions

+

Definitions

    -
  • The size of a sequence is the number of elements it contains. The size is a +
  • The size of a sequence is the number of elements it contains. The size is a nonnegative number.
  • A sequence is empty if its size is zero.
-

Expression requirements

-

For any Forward Sequence s the following expressions must be valid:

- +

Expression requirements

+

For any Forward Sequence s the following expressions must be valid:

+
- - - + + + - + - + - + - + @@ -73,67 +70,68 @@ nonnegative number.
ExpressionTypeComplexity
ExpressionTypeComplexity
begin<s>::typeForward IteratorForward Iterator Amortized constant time
end<s>::typeForward IteratorForward Iterator Amortized constant time
size<s>::typeIntegral ConstantIntegral Constant Unspecified
empty<s>::typeBoolean Integral ConstantBoolean Integral Constant Constant time
front<s>::type
-

Expression semantics

- +

Expression semantics

+
- - + + - + - + - + - + - +
ExpressionSemantics
ExpressionSemantics
begin<s>::typeAn iterator to the first element of the sequence; see begin.An iterator to the first element of the sequence; see begin.
end<s>::typeA past-the-end iterator to the sequence; see end.A past-the-end iterator to the sequence; see end.
size<s>::typeThe size of the sequence; see size.The size of the sequence; see size.
empty<s>::typeA boolean Integral Constant c such that -c::value == true if and only if the sequence is empty; see empty.A boolean Integral Constant c such that +c::value == true if and only if the sequence is empty; see empty.
front<s>::typeThe first element in the sequence; see front.The first element in the sequence; see front.
-

Invariants

-

For any Forward Sequence s the following invariants always hold:

+

Invariants

+

For any Forward Sequence s the following invariants always hold:

  • [begin<s>::type, end<s>::type) is always a valid range.
  • -
  • An algorithm that iterates through the range [begin<s>::type, end<s>::type) +
  • An algorithm that iterates through the range [begin<s>::type, end<s>::type) will pass through every element of s exactly once.
  • begin<s>::type is identical to end<s>::type if and only if s is empty.
  • Two different iterations through s will access its elements in the same order.
- + diff --git a/doc/refmanual/front-extensible-sequence.html b/doc/refmanual/front-extensible-sequence.html index 4557171..d4c31f6 100644 --- a/doc/refmanual/front-extensible-sequence.html +++ b/doc/refmanual/front-extensible-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Front Extensible Sequence @@ -15,39 +12,39 @@ Front Page / Sequences / Concepts / Front Extensible Sequence
-

Front Extensible Sequence

-
+

Front Extensible Sequence

+

Description

-

A Front Extensible Sequence is an Extensible Sequence that supports amortized constant +

A Front Extensible Sequence is an Extensible Sequence that supports amortized constant time insertion and removal operations at the beginning.

-
+ -
+

Expression requirements

-

In addition to the requirements defined in Extensible Sequence, -for any Back Extensible Sequence s the following must be met:

- +

In addition to the requirements defined in Extensible Sequence, +for any Back Extensible Sequence s the following must be met:

+
- - - + + + - + - + @@ -57,51 +54,52 @@ for any Back Extensi
ExpressionTypeComplexity
ExpressionTypeComplexity
push_front<s,x>::typeFront Extensible SequenceFront Extensible Sequence Amortized constant time
pop_front<s>::typeFront Extensible SequenceFront Extensible Sequence Amortized constant time
front<s>::type
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Extensible Sequence.

- +where they differ from, or are not defined in Extensible Sequence.

+
- - + + +see push_front. +see pop_front. - +
ExpressionSemantics
ExpressionSemantics
push_front<s,x>::type Equivalent to insert<s,begin<s>::type,x>::type; -see push_front.
pop_front<v>::type Equivalent to erase<s,begin<s>::type>::type; -see pop_front.
front<s>::typeThe first element in the sequence; see front.The first element in the sequence; see front.
-
+ - - + diff --git a/doc/refmanual/front-inserter.html b/doc/refmanual/front-inserter.html index 052999d..8cf8513 100644 --- a/doc/refmanual/front-inserter.html +++ b/doc/refmanual/front-inserter.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: front_inserter - +
Front Page / Algorithms / Inserters / front_inserter
-

front_inserter

-
+

front_inserter

+

Synopsis

 template<
@@ -29,92 +26,93 @@ struct front_inserter
 };
 
-
+

Description

Inserts elements at the beginning of the sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SeqFront Extensible SequenceFront Extensible Sequence A sequence to bind the inserter to.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Inserter.

-

For any Front Extensible Sequence s:

- +where they differ from, or are not defined in Inserter.

+

For any Front Extensible Sequence s:

+
- - + + -
ExpressionSemantics
ExpressionSemantics
front_inserter<s>

An Inserter in, equivalent to

+

An Inserter in, equivalent to

-struct in : inserter<s,push_front<_1,_2> > {};
+struct in : inserter<s,push_front<_1,_2> > {};
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef reverse_copy<
       range_c<int,0,5>
     , front_inserter< vector_c<int,5,6,7,8,9> >
     >::type range;
-   
+
 BOOST_MPL_ASSERT(( equal< range, range_c<int,0,10> > ));
 
- - - + + diff --git a/doc/refmanual/front.html b/doc/refmanual/front.html index bc01c0b..dd9a22f 100644 --- a/doc/refmanual/front.html +++ b/doc/refmanual/front.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: front @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / front
-

front

-
+

front

+

Synopsis

 template<
@@ -28,55 +25,57 @@ struct front
 };
 
-
+

Description

Returns the first element in the sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be examined.
-
+

Expression semantics

-

For any Forward Sequence s:

+

For any Forward Sequence s:

-typedef front<s>::type t; 
+typedef front<s>::type t;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:empty<s>::value == false.
Precondition:

empty<s>::value == false.

+
Semantics:

Equivalent to

@@ -87,11 +86,11 @@ typedef deref< 
+

Complexity

Amortized constant time.

-
+

Example

 typedef list<long>::type types1;
@@ -103,15 +102,16 @@ typedef list<char,int,long>::
 BOOST_MPL_ASSERT(( is_same< front<types3>::type, char> ));
 
- - +
diff --git a/doc/refmanual/greater-equal.html b/doc/refmanual/greater-equal.html index b5fcfcf..ce395cd 100644 --- a/doc/refmanual/greater-equal.html +++ b/doc/refmanual/greater-equal.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: greater_equal @@ -15,8 +12,8 @@ Front Page / Metafunctions / Comparisons / greater_equal
-

greater_equal

-
+

greater_equal

+

Synopsis

 template<
@@ -29,58 +26,59 @@ struct greater_equal
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if T1 is greater than or equal to T2.

+

Returns a true-valued Integral Constant if T1 is greater than or equal to T2.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

-typedef greater_equal<c1,c2>::type r; 
+typedef greater_equal<c1,c2>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -92,13 +90,14 @@ typedef bool_< (c1::value < c
 
-typedef greater_equal<c1,c2> r; 
+typedef greater_equal<c1,c2> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -109,11 +108,11 @@ struct r : greater_equal&l
 
-
+

Complexity

Amortized constant time.

-
+

Example

 BOOST_MPL_ASSERT(( greater_equal< int_<10>, int_<0> > ));
@@ -121,15 +120,16 @@ struct r : greater_equal&l
 BOOST_MPL_ASSERT(( greater_equal< long_<10>, int_<10> > ));
 
- - + diff --git a/doc/refmanual/greater.html b/doc/refmanual/greater.html index a632fbb..4de4977 100644 --- a/doc/refmanual/greater.html +++ b/doc/refmanual/greater.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: greater @@ -15,8 +12,8 @@ Front Page / Metafunctions / Comparisons / greater
-

greater

-
+

greater

+

Synopsis

 template<
@@ -29,58 +26,59 @@ struct greater
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if T1 is greater than T2.

+

Returns a true-valued Integral Constant if T1 is greater than T2.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

-typedef greater<c1,c2>::type r; 
+typedef greater<c1,c2>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -92,13 +90,14 @@ typedef bool_< (c1::value < c
 
-typedef greater<c1,c2> r; 
+typedef greater<c1,c2> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -109,11 +108,11 @@ struct r : greater<c1,c2>:
 
-
+

Complexity

Amortized constant time.

-
+

Example

 BOOST_MPL_ASSERT(( greater< int_<10>, int_<0> > ));
@@ -121,15 +120,16 @@ struct r : greater<c1,c2>:
 BOOST_MPL_ASSERT_NOT(( greater< long_<10>, int_<10> > ));
 
- - + diff --git a/doc/refmanual/has-key.html b/doc/refmanual/has-key.html index ef3f770..42fc75e 100644 --- a/doc/refmanual/has-key.html +++ b/doc/refmanual/has-key.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: has_key @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / has_key
-

has_key

-
+

has_key

+

Synopsis

 template<
@@ -29,38 +26,38 @@ struct has_key
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if Sequence contains an element +

Returns a true-valued Integral Constant if Sequence contains an element with key Key.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + @@ -70,17 +67,17 @@ with key Key.

ParameterRequirementDescription
ParameterRequirementDescription
SequenceAssociative SequenceAssociative Sequence A sequence to query.
Key
-
+

Expression semantics

-

For any Associative Sequence s, and arbitrary type key:

+

For any Associative Sequence s, and arbitrary type key:

-typedef has_key<s,key>::type c; 
+typedef has_key<s,key>::type c;
 
- +
- + @@ -88,11 +85,11 @@ typedef has_key<s,key>::ty
Return type:Boolean Integral Constant.
Return type:Boolean Integral Constant.
Semantics:c::value == true if key is in s's set of keys; otherwise c::value == false.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef map< pair<int,unsigned>, pair<char,long> > m;
@@ -102,15 +99,16 @@ typedef insert< m, BOOST_MPL_ASSERT(( has_key<m1,long> ));
 
- - + diff --git a/doc/refmanual/has-xxx-trait-def.html b/doc/refmanual/has-xxx-trait-def.html index 6f26c57..2f071eb 100644 --- a/doc/refmanual/has-xxx-trait-def.html +++ b/doc/refmanual/has-xxx-trait-def.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_HAS_XXX_TRAIT_DEF @@ -14,9 +11,9 @@
Front Page / Macros / Introspection / BOOST_MPL_HAS_XXX_TRAIT_DEF
-
-

BOOST_MPL_HAS_XXX_TRAIT_DEF

-
+
+

BOOST_MPL_HAS_XXX_TRAIT_DEF

+

Synopsis

 #define BOOST_MPL_HAS_XXX_TRAIT_DEF(name) \
@@ -24,36 +21,36 @@
 /**/
 
-
+

Description

-

Expands into a definition of a boolean unary Metafunction has_name +

Expands into a definition of a boolean unary Metafunction has_name such that for any type x has_name<x>::value == true if and only if x is a class type and has a nested type memeber x::name.

-

On the deficient compilers not capabale of performing the detection, -has_name<x>::value always returns false. A boolean configuraion -macro, BOOST_MPL_CFG_NO_HAS_XXX, is provided to signal or override +

On the deficient compilers not capabale of performing the detection, +has_name<x>::value always returns false. A boolean configuraion +macro, BOOST_MPL_CFG_NO_HAS_XXX, is provided to signal or override the "deficient" status of a particular compiler.

-

[Note: BOOST_MPL_HAS_XXX_TRAIT_DEF is a simplified front end to -the BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF introspection macro — end note]

+

[Note: BOOST_MPL_HAS_XXX_TRAIT_DEF is a simplified front end to +the BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF introspection macro — end note]

-
+ -
+

Parameters

- +
- - - + + + @@ -64,19 +61,21 @@ the
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For any legal C++ identifier name:

 BOOST_MPL_HAS_XXX_TRAIT_DEF(name)
 
- +
- + - +
Precondition:Appears at namespace scope.
Precondition:

Appears at namespace scope.

+
Return type:None.
Return type:

None.

+
Semantics:

Equivalent to

@@ -89,10 +88,10 @@ the 
 
-
+

Example

-BOOST_MPL_HAS_XXX_TRAIT_DEF(has_xxx)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(xxx)
 
 struct test1 {};
 struct test2 { void xxx(); };
@@ -117,21 +116,22 @@ struct test9 { typedef void (xxx)(); };
 BOOST_MPL_ASSERT(( has_xxx<test9> ));
 #endif
 
-BOOST_MPL_ASSERT(( has_xxx<test6,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test7,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test8,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test9,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test6,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test7,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test8,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test9,true_> ));
 
- - + diff --git a/doc/refmanual/has-xxx-trait-named-def.html b/doc/refmanual/has-xxx-trait-named-def.html index 69e1e90..73dc0e7 100644 --- a/doc/refmanual/has-xxx-trait-named-def.html +++ b/doc/refmanual/has-xxx-trait-named-def.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF @@ -14,9 +11,9 @@
Front Page / Macros / Introspection / BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF
-
-

BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF

-
+
+

BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF

+

Synopsis

 #define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
@@ -24,37 +21,37 @@
 /**/
 
-
+

Description

-

Expands into a definition of a boolean unary Metafunction trait +

Expands into a definition of a boolean unary Metafunction trait such that for any type x trait<x>::value == true if and only if x is a class type and has a nested type memeber x::name.

-

On the deficient compilers not capabale of performing the detection, -trait<x>::value always returns a fallback value default_. -A boolean configuraion macro, BOOST_MPL_CFG_NO_HAS_XXX, is provided +

On the deficient compilers not capabale of performing the detection, +trait<x>::value always returns a fallback value default_. +A boolean configuraion macro, BOOST_MPL_CFG_NO_HAS_XXX, is provided to signal or override the "deficient" status of a particular compiler. -[Note: The fallback value call also be provided at the point of the -metafunction invocation; see the Expression semantics section for +[Note: The fallback value can also be provided at the point of the +metafunction invocation; see the Expression semantics section for details — end note]

-
+ -
+

Parameters

- +
- - - + + + @@ -73,20 +70,22 @@ details — end note]

ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

-

For any legal C++ identifiers trait and name, boolean constant expression c1, -boolean Integral Constant c2, and arbitrary type x:

+

For any legal C++ identifiers trait and name, boolean constant expression c1, +boolean Integral Constant c2, and arbitrary type x:

 BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, c1)
 
- +
- + - +
Precondition:Appears at namespace scope.
Precondition:

Appears at namespace scope.

+
Return type:None.
Return type:

None.

+
Semantics:

Expands into an equivalent of the following class template definition

@@ -97,18 +96,18 @@ struct trait
     // ...
 };
 
-

where trait is a boolean Metafunction with the following semantics:

+

where trait is a boolean Metafunction with the following semantics:

 typedef trait<x>::type r;
 
- +
- + - @@ -116,13 +115,14 @@ that has a nested type memeber x::name typedef trait< x,c2 >::type r; -
Return type:Integral Constant.
Return type:Integral Constant.
Semantics:If BOOST_MPL_CFG_NO_HAS_XXX is defined, r::value == c1; -otherwise, r::value == true if and only if x is a class type +
Semantics:If BOOST_MPL_CFG_NO_HAS_XXX is defined, r::value == c1; +otherwise, r::value == true if and only if x is a class type that has a nested type memeber x::name.
+
- + -
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

If BOOST_MPL_CFG_NO_HAS_XXX is defined, r::value == c2::value; +

Semantics:

If BOOST_MPL_CFG_NO_HAS_XXX is defined, r::value == c2::value; otherwise, equivalent to

 typedef trait<x>::type r;
@@ -136,7 +136,7 @@ typedef trait<x>::type r;
 
-
+

Example

 BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_xxx, xxx, false)
@@ -164,20 +164,21 @@ struct test9 { typedef void (xxx)(); };
 BOOST_MPL_ASSERT(( has_xxx<test9> ));
 #endif
 
-BOOST_MPL_ASSERT(( has_xxx<test6,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test7,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test8,true_> ));
-BOOST_MPL_ASSERT(( has_xxx<test9,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test6,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test7,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test8,true_> ));
+BOOST_MPL_ASSERT(( has_xxx<test9,true_> ));
 
- - +
diff --git a/doc/refmanual/identity.html b/doc/refmanual/identity.html index 19cb0ac..b3a377c 100644 --- a/doc/refmanual/identity.html +++ b/doc/refmanual/identity.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: identity @@ -15,11 +12,11 @@ Front Page / Metafunctions / Miscellaneous / identity
-

identity

-
+

identity

+

Synopsis

-template< 
+template<
       typename X
     >
 struct identity
@@ -28,32 +25,32 @@ struct identity
 };
 
-
+

Description

-

The identity metafunction. Returns X unchanged.

+

The identity metafunction. Returns X unchanged.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -64,48 +61,51 @@ struct identity
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For an arbitrary type x:

 typedef identity<x>::type r;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

-
+
 typedef x r;
 
Postcondition:is_same<r,x>::value == true.
Postcondition:

is_same<r,x>::value == true.

+
-
+

Example

-typedef apply< identity<_1>, char >::type t1;
-typedef apply< identity<_2>, char,int >::type t2;
+typedef apply< identity<_1>, char >::type t1;
+typedef apply< identity<_2>, char,int >::type t2;
 
 BOOST_MPL_ASSERT(( is_same< t1, char > ));
 BOOST_MPL_ASSERT(( is_same< t2, int > ));
 
- - + diff --git a/doc/refmanual/if-c.html b/doc/refmanual/if-c.html index 83a314a..2edb665 100644 --- a/doc/refmanual/if-c.html +++ b/doc/refmanual/if-c.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: if_c @@ -15,11 +12,11 @@ Front Page / Metafunctions / Type Selection / if_c
-

if_c

-
+

if_c

+

Synopsis

-template< 
+template<
       bool c
     , typename T1
     , typename T2
@@ -30,30 +27,30 @@ struct if_c
 };
 
-
+

Description

Returns one of its two arguments, T1 or T2, depending on the value of -integral constant c. if_c<c,t1,t2>::type is a shorcut notation for +integral constant c. if_c<c,t1,t2>::type is a shorcut notation for if_< bool_<c>,t1,t2 >::type.

-
+ -
+

Parameters

- +
- - - + + + @@ -68,13 +65,13 @@ integral constant c.
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For any integral constant c and arbitrary types t1, t2:

 typedef if_c<c,t1,t2>::type t;
 
- +
@@ -85,7 +82,7 @@ typedef if_c<c,t1,t2>::type t
-
+

Example

 typedef if_c<true,char,long>::type t1;
@@ -94,16 +91,32 @@ typedef if_c<false,char,long>
 BOOST_MPL_ASSERT(( is_same<t1, char> ));
 BOOST_MPL_ASSERT(( is_same<t2, long> ));
 
+
+// allocates space for an object of class T on heap or "inplace"
+// depending on its size
+template< typename T > struct lightweight
+{
+    // ...
+    typedef typename if_c<
+          sizeof(T) <= sizeof(T*)
+        , inplace_storage<T>
+        , heap_storage<T>
+        >::type impl_t;
+
+    impl_t impl;
+};
+
- - + diff --git a/doc/refmanual/if.html b/doc/refmanual/if.html index 8919bea..f4c78af 100644 --- a/doc/refmanual/if.html +++ b/doc/refmanual/if.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: if_ @@ -15,11 +12,11 @@ Front Page / Metafunctions / Type Selection / if_
-

if_

-
+

if_

+

Synopsis

-template< 
+template<
       typename C
     , typename T1
     , typename T2
@@ -30,33 +27,33 @@ struct if_
 };
 
-
+

Description

Returns one of its two arguments, T1 or T2, depending on the value C.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -66,43 +63,59 @@ struct if_
ParameterRequirementDescription
ParameterRequirementDescription
CIntegral ConstantIntegral Constant A selection condition.
T1, T2
-
+

Expression semantics

-

For any Integral Constant c and arbitrary types t1, t2:

+

For any Integral Constant c and arbitrary types t1, t2:

 typedef if_<c,t1,t2>::type t;
 
- +
-
Return type:Any type.
Semantics:If c::value == true, t is identical to t1; otherwise t is +
Semantics:If c::value == true, t is identical to t1; otherwise t is identical to t2.
-
+

Example

-typedef if_<true_,char,long>::type t1;
-typedef if_<false_,char,long>::type t2;
+typedef if_<true_,char,long>::type t1;
+typedef if_<false_,char,long>::type t2;
 
 BOOST_MPL_ASSERT(( is_same<t1, char> ));
 BOOST_MPL_ASSERT(( is_same<t2, long> ));
 
+
+// allocates space for an object of class T on heap or "inplace"
+// depending on its size
+template< typename T > struct lightweight
+{
+    // ...
+    typedef typename if_<
+          less_equal< sizeof_<T>, sizeof_<T*> >
+        , inplace_storage<T>
+        , heap_storage<T>
+        >::type impl_t;
+
+    impl_t impl;
+};
+
- - + diff --git a/doc/refmanual/inherit-linearly.html b/doc/refmanual/inherit-linearly.html index 2f34178..a41c4b5 100644 --- a/doc/refmanual/inherit-linearly.html +++ b/doc/refmanual/inherit-linearly.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: inherit_linearly @@ -15,8 +12,8 @@ Front Page / Metafunctions / Miscellaneous / inherit_linearly
-

inherit_linearly

-
+

inherit_linearly

+

Synopsis

 template<
@@ -30,44 +27,44 @@ struct inherit_linearly
 };
 
-
+

Description

A convenience wrapper for fold to use in the context of sequence-driven class composition. Returns the result the successive application of binary -Node to the result of the previous Node invocation (Root if it's -the first call) and every type in the Forward Sequence Types in order.

+Node to the result of the previous Node invocation (Root if it's +the first call) and every type in the Forward Sequence Types in order.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + @@ -78,33 +75,34 @@ hierarchy.
ParameterRequirementDescription
ParameterRequirementDescription
TypesForward SequenceForward Sequence Types to inherit from.
NodeBinary Lambda ExpressionBinary Lambda Expression A derivation metafunction.
Root
-
+

Expression semantics

-

For any Forward Sequence types, binary Lambda Expression node, and arbitrary +

For any Forward Sequence types, binary Lambda Expression node, and arbitrary class type root:

-typedef inherit_linearly<types,node,root>::type r; 
+typedef inherit_linearly<types,node,root>::type r;
 
- +
- +
Return type:A class type.
Return type:

A class type.

+
Semantics:

Equivalent to

-typedef fold<types,root,node>::type r; 
+typedef fold<types,root,node>::type r;
 
-
+

Complexity

Linear. Exactly size<types>::value applications of node.

-
+

Example

 template< typename T > struct tuple_field
@@ -121,14 +119,14 @@ T& field(tuple_field<T>& t)
 
 typedef inherit_linearly<
       vector<int,char const*,bool>
-    , inherit< _1, tuple_field<_2> >
+    , inherit< _1, tuple_field<_2> >
     >::type tuple;
 
 
 int main()
 {
     tuple t;
-    
+
     field<int>(t) = -1;
     field<char const*>(t) = "text";
     field<bool>(t) = false;
@@ -141,15 +139,16 @@ int main()
 }
 
- - + diff --git a/doc/refmanual/inherit.html b/doc/refmanual/inherit.html index 08e8c22..7ac3c12 100644 --- a/doc/refmanual/inherit.html +++ b/doc/refmanual/inherit.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: inherit @@ -15,8 +12,8 @@ Front Page / Metafunctions / Miscellaneous / inherit
-

inherit

-
+

inherit

+

Synopsis

 template<
@@ -49,35 +46,35 @@ struct inherit
 };
 
-
+

Description

Returns an unspecified class type publically derived from T1, T2,... Tn. -Guarantees that derivation from empty_base is always a no-op, -regardless of the position and number of empty_base classes in +Guarantees that derivation from empty_base is always a no-op, +regardless of the position and number of empty_base classes in T1, T2,... Tn.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -88,19 +85,21 @@ regardless of the position and number of +

Expression semantics

For artibrary class types t1,t2,... tn:

-typedef inherit2<t1,t2>::type r; 
+typedef inherit2<t1,t2>::type r;
 
-
ParameterRequirementDescription
ParameterRequirementDescription
+
- + - +
Return type:A class type.
Return type:

A class type.

+
Precondition:t1 and t2 are complete types.
Precondition:

t1 and t2 are complete types.

+
Semantics:

If both t1 and t2 are identical to empty_base, equivalent to

@@ -124,15 +123,17 @@ struct r : t1, t2 {};
 
-typedef inheritn<t1,t2,...tn>::type r; 
+typedef inheritn<t1,t2,...tn>::type r;
 
- +
- + - +
Return type:A class type.
Return type:

A class type.

+
Precondition:t1,t2,... tn are complete types.
Precondition:

t1,t2,... tn are complete types.

+
Semantics:

Equivalent to

@@ -150,30 +151,32 @@ struct r
 
-typedef inherit<t1,t2,...tn>::type r; 
+typedef inherit<t1,t2,...tn>::type r;
 
- +
- + - +
Precondition:t1,t2,... tn are complete types.
Precondition:

t1,t2,... tn are complete types.

+
Return type:A class type.
Return type:

A class type.

+
Semantics:

Equivalent to

-typedef inheritn<t1,t2,...tn>::type r; 
+typedef inheritn<t1,t2,...tn>::type r;
 
-
+

Complexity

Amortized constant time.

-
+

Example

 struct udt1 { int n; };
@@ -187,22 +190,23 @@ typedef inherit<BOOST_MPL_ASSERT(( is_base_and_derived< udt1, r1> ));
 BOOST_MPL_ASSERT(( is_base_and_derived< udt2, r1> ));
-BOOST_MPL_ASSERT(( is_same< r2, udt1> ));    
+BOOST_MPL_ASSERT(( is_same< r2, udt1> ));
 BOOST_MPL_ASSERT(( is_same< r3, udt1 > ));
 BOOST_MPL_ASSERT(( is_base_and_derived< udt1, r4 > ));
 BOOST_MPL_ASSERT(( is_base_and_derived< udt2, r4 > ));
 BOOST_MPL_ASSERT(( is_same< r5, empty_base > ));
 
- - + diff --git a/doc/refmanual/insert-range.html b/doc/refmanual/insert-range.html index 46dcacd..8effef0 100644 --- a/doc/refmanual/insert-range.html +++ b/doc/refmanual/insert-range.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: insert_range @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / insert_range
-

insert_range

-
+

insert_range

+

Synopsis

 template<
@@ -30,86 +27,89 @@ struct insert_range
 };
 
-
+

Description

-

insert_range performs an insertion of a range of elements at an arbitrary position in +

insert_range performs an insertion of a range of elements at an arbitrary position in the sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceExtensible Sequence or -Extensible Associative SequenceExtensible Sequence or +Extensible Associative Sequence A sequence to insert into.
PosForward IteratorForward Iterator An iterator in Sequence specifying the insertion position.
RangeForward SequenceForward Sequence The range of elements to be inserted.
-
+

Expression semantics

-

For any Extensible Sequence s, iterator pos in s, and Forward Sequence range:

+

For any Extensible Sequence s, iterator pos in s, and Forward Sequence range:

-typedef insert<s,pos,range>::type r; 
+typedef insert<s,pos,range>::type r;
 
- +
- + - + - +[pos, end<s>::type).

+
Return type:Extensible Sequence.
Return type:

Extensible Sequence.

+
Precondition:pos is an iterator into s.
Precondition:

pos is an iterator into s.

+
Semantics:r is a sequence, concept-identical to s, of the following elements: +
Semantics:

r is a sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), [begin<r>::type, end<r>::type), -[pos, end<s>::type).

Postcondition:

The relative order of the elements in r is the same as in s;

-size<r>::value == size<s>::value + size<range>::value 
+size<r>::value == size<s>::value + size<range>::value
 
-
+

Complexity

-

Sequence dependent. Quadratic in the worst case, linear at best; see the particular +

Sequence dependent. Quadratic in the worst case, linear at best; see the particular sequence class' specification for details.

-
+

Example

 typedef vector_c<int,0,1,7,8,9> numbers;
@@ -119,7 +119,7 @@ typedef insert_range< nu
 BOOST_MPL_ASSERT_RELATION( size<range>::value, ==, 10 );
 BOOST_MPL_ASSERT(( equal< range,range_c<int,0,10> > ));
 
-typedef insert_range< 
+typedef insert_range<
       list0<>
     , end< list0<> >::type
     , list<int>
@@ -128,15 +128,16 @@ typedef insert_range<
 BOOST_MPL_ASSERT_RELATION( size<result2>::value, ==, 1 );
 
- - + diff --git a/doc/refmanual/insert.html b/doc/refmanual/insert.html index e87a453..60d3df9 100644 --- a/doc/refmanual/insert.html +++ b/doc/refmanual/insert.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: insert @@ -15,14 +12,14 @@ Front Page / Sequences / Intrinsic Metafunctions / insert
-

insert

-
+

insert

+

Synopsis

-template< 
+template<
       typename Sequence
     , typename Pos
-    , typename T 
+    , typename T
     >
 struct insert
 {
@@ -30,9 +27,9 @@ struct insert
 };
 
 
-template< 
+template<
       typename Sequence
-    , typename T 
+    , typename T
     >
 struct insert
 {
@@ -40,49 +37,49 @@ struct insert
 };
 
-
+

Description

-

insert is an overloaded name:

+

insert is an overloaded name:

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - + @@ -93,23 +90,26 @@ insertion position.
ParameterRequirementDescription
ParameterRequirementDescription
SequenceExtensible Sequence or -Extensible Associative SequenceExtensible Sequence or +Extensible Associative Sequence A sequence to insert into.
PosForward IteratorForward Iterator An iterator in Sequence specifying the insertion position.
-
+

Expression semantics

-

For any Extensible Sequence s, iterator pos in s, and arbitrary type x:

+

For any Extensible Sequence s, iterator pos in s, and arbitrary type x:

-typedef insert<s,pos,x>::type r; 
+typedef insert<s,pos,x>::type r;
 
- +
- + - + - + @@ -125,18 +125,18 @@ typedef insert<s,pos,x>::ty
Return type:Extensible Sequence
Return type:

Extensible Sequence

+
Precondition:pos is an iterator in s.
Precondition:

pos is an iterator in s.

+
Semantics:r is a sequence, concept-identical to s, of the following elements: -[begin<s>::type, pos), x, [pos, end<s>::type).
Semantics:

r is a sequence, concept-identical to s, of the following elements: +[begin<s>::type, pos), x, [pos, end<s>::type).

+
Postcondition:

The relative order of the elements in r is the same as in s.

@@ -117,7 +117,7 @@ typedef insert<s,pos,x>::ty
 

is identical to x;

-size<r>::value == size<s>::value + 1;        
+size<r>::value == size<s>::value + 1;
 
-

For any Extensible Associative Sequence s, iterator pos in s, +

For any Extensible Associative Sequence s, iterator pos in s, and arbitrary type x:

-typedef insert<s,x>::type r; 
+typedef insert<s,x>::type r;
 
- +
- + - @@ -145,13 +145,13 @@ typedef insert<s,x>::type r
Return type:Extensible Associative Sequence
Return type:Extensible Associative Sequence
Semantics:r is concept-identical and equivalent to s, except that +
Semantics:r is concept-identical and equivalent to s, except that at< r, key_type<s,x>::type >::type is identical to value_type<s,x>::type.
Postcondition:size<r>::value == size<s>::value + 1.
-typedef insert<s,pos,x>::type r; 
+typedef insert<s,pos,x>::type r;
 
- +
- + @@ -161,30 +161,30 @@ typedef insert<s,pos,x>::ty
Return type:Extensible Associative Sequence
Return type:Extensible Associative Sequence
Precondition:pos is an iterator in s.
-
+

Complexity

- +
- - + + - + - +
Sequence archetypeComplexity
Sequence archetypeComplexity
Extensible Associative Sequence
Extensible Associative Sequence Amortized constant time.
Extensible Sequence
Extensible Sequence Linear in the worst case, or amortized constant time.
-
+

Example

 typedef vector_c<int,0,1,3,4,5,6,7,8,9> numbers;
@@ -203,15 +203,16 @@ typedef insert<m,mpl::BOOST_MPL_ASSERT(( is_same< at<m1,char>::type,long > ));
 
- - + diff --git a/doc/refmanual/inserters-inserter.html b/doc/refmanual/inserter-class.html similarity index 62% rename from doc/refmanual/inserters-inserter.html rename to doc/refmanual/inserter-class.html index 645f883..b19e5b0 100644 --- a/doc/refmanual/inserters-inserter.html +++ b/doc/refmanual/inserter-class.html @@ -1,61 +1,58 @@ - - - - -The MPL Reference Manual: inserter + +The MPL Reference Manual: inserter (class) - +
Front Page / Algorithms / Inserters / inserterFront Page / Algorithms / Inserters / inserter (class)
-
-

inserter

-
+
+

inserter (class)

+

Synopsis

 template<
       typename State
     , typename Operation
     >
-struct inserter
+struct inserter
 {
     typedef State state;
     typedef Operation operation;
 };
 
-
+

Description

-

A general-purpose model of the Inserter concept.

+

A general-purpose model of the Inserter concept.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -64,62 +61,63 @@ struct inserter - +
ParameterRequirementDescription
ParameterRequirementDescription
A initial state.
OperationBinary Lambda ExpressionBinary Lambda Expression An output operation.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Inserter.

-

For any binary Lambda Expression op and arbitrary type state:

- +where they differ from, or are not defined in Inserter.

+

For any binary Lambda Expression op and arbitrary type state:

+
- - + + - - + +
ExpressionSemantics
ExpressionSemantics
inserter<op,state>An Inserter.
inserter<op,state>An Inserter.
-
+

Complexity

Amortized constant time.

-
+

Example

 template< typename N > struct is_odd : bool_< ( N::value % 2 ) > {};
 
 typedef copy<
       range_c<int,0,10>
-    , inserter< // a filtering 'push_back' inserter
+    , inserter< // a filtering 'push_back' inserter
           vector<>
-        , if_< is_odd<_2>, push_back<_1,_2>, _1 >
+        , if_< is_odd<_2>, push_back<_1,_2>, _1 >
         >
     >::type odds;
-   
+
 BOOST_MPL_ASSERT(( equal< odds, vector_c<int,1,3,5,7,9>, equal_to<_,_> > ));
 
- - + diff --git a/doc/refmanual/inserter.html b/doc/refmanual/inserter.html index 76cd5ae..665bec0 100644 --- a/doc/refmanual/inserter.html +++ b/doc/refmanual/inserter.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Inserter @@ -15,35 +12,35 @@ Front Page / Algorithms / Concepts / Inserter
-

Inserter

-
+

Inserter

+

Description

-

An Inserter is a compile-time substitute for STL Output Iterator. -Under the hood, it's simply a type holding -two entities: a state and an operation. When passed to a -transformation algorithm, the inserter's binary operation is -invoked for every element that would normally be written into the +

An Inserter is a compile-time substitute for STL Output Iterator. +Under the hood, it's simply a type holding +two entities: a state and an operation. When passed to a +transformation algorithm, the inserter's binary operation is +invoked for every element that would normally be written into the output iterator, with the element itself (as the second argument) and the result of the previous operation's invocation — or, for the very first element, the inserter's initial state.

Technically, instead of taking a single inserter parameter, -transformation algorithms could accept the state and the "output" -operation separately. Grouping these in a single parameter entity, -however, brings the algorithms semantically and syntactically closer to -their STL counterparts, significantly simplifying many of the common +transformation algorithms could accept the state and the "output" +operation separately. Grouping these in a single parameter entity, +however, brings the algorithms semantically and syntactically closer to +their STL counterparts, significantly simplifying many of the common use cases.

-

Valid expressions

-

In the following table and subsequent specifications, in is a model of Inserter.

- +

Valid expressions

+

In the following table and subsequent specifications, in is a model of Inserter.

+
- - + + @@ -51,21 +48,21 @@ use cases.

- +
ExpressionType
ExpressionType
Any type
in::operationBinary Lambda ExpressionBinary Lambda Expression
-
+

Expression semantics

- +
- - + + @@ -78,33 +75,34 @@ use cases.

ExpressionSemantics
ExpressionSemantics
-
+

Example

 typedef transform<
       range_c<int,0,10>
-    , plus<_1,_1>
+    , plus<_1,_1>
     , back_inserter< vector0<> >
     >::type result;
 
-
+ - - + diff --git a/doc/refmanual/inserters.html b/doc/refmanual/inserters.html index 104fe8d..932a23d 100644 --- a/doc/refmanual/inserters.html +++ b/doc/refmanual/inserters.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Inserters @@ -15,16 +12,18 @@ Front Page / Algorithms / Inserters
- + diff --git a/doc/refmanual/int.html b/doc/refmanual/int.html index c16e623..b6777a7 100644 --- a/doc/refmanual/int.html +++ b/doc/refmanual/int.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: int_ @@ -15,8 +12,8 @@ Front Page / Data Types / Numeric / int_
-

int_

-
+

int_

+

Synopsis

 template<
@@ -29,32 +26,32 @@ struct int_
 };
 
-
+

Description

-

An Integral Constant wrapper for int.

+

An Integral Constant wrapper for int.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -65,30 +62,30 @@ struct int_
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Integral Constant.

+where they differ from, or are not defined in Integral Constant.

For arbitrary integral constant n:

- +
- - + + -
ExpressionSemantics
ExpressionSemantics
int_<c>An Integral Constant x such that x::value == c +An Integral Constant x such that x::value == c and x::value_type is identical to int.
-
+

Example

 typedef int_<8> eight;
@@ -101,15 +98,16 @@ typedef int_<8> eight;
 assert( eight() == 8 );
 
- - + diff --git a/doc/refmanual/integral-c.html b/doc/refmanual/integral-c.html index acb030f..03a1825 100644 --- a/doc/refmanual/integral-c.html +++ b/doc/refmanual/integral-c.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: integral_c - +
Front Page / Data Types / Numeric / integral_c
-

integral_c

-
+

integral_c

+

Synopsis

 template<
@@ -29,32 +26,32 @@ struct integral_c
 };
 
-
+

Description

-

A generic Integral Constant wrapper.

+

A generic Integral Constant wrapper.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -69,30 +66,30 @@ struct integral_c
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Integral Constant.

+where they differ from, or are not defined in Integral Constant.

For arbitrary integral type t and integral constant n:

- +
- - + + -
ExpressionSemantics
ExpressionSemantics
integral_c<t,c>An Integral Constant x such that x::value == c +An Integral Constant x such that x::value == c and x::value_type is identical to t.
-
+

Example

 typedef integral_c<short,8> eight;
@@ -105,14 +102,16 @@ typedef integral_c<short,8
 assert( eight() == 8 );
 
- - - + + diff --git a/doc/refmanual/integral-constant.html b/doc/refmanual/integral-constant.html index c8f07ea..0964560 100644 --- a/doc/refmanual/integral-constant.html +++ b/doc/refmanual/integral-constant.html @@ -1,44 +1,45 @@ - - - - + The MPL Reference Manual: Integral Constant - - +
Front Page / Data Types / Concepts / Integral Constant
+
Front Page / Data Types / Concepts / Integral Constant
-

Integral Constant

-
+

Integral Constant

+

Description

-

An Integral Constant is a holder class for a compile-time value of an -integral type. Every Integral Constant is also a nullary Metafunction, -returning itself. An integral constant object is implicitly convertible to the +

An Integral Constant is a holder class for a compile-time value of an +integral type. Every Integral Constant is also a nullary Metafunction, +returning itself. An integral constant object is implicitly convertible to the corresponding run-time value of the wrapped integral type.

-
+

Expression requirements

-

In the following table and subsequent specifications, n is a model of Integral Constant.

- +

In the following table and subsequent specifications, n is a model of Integral Constant.

+
- - - + + + + + + + @@ -48,15 +49,15 @@ corresponding run-time value of the wrapped integral type.

- + - + - + @@ -66,19 +67,23 @@ corresponding run-time value of the wrapped integral type.

ExpressionTypeComplexity
ExpressionTypeComplexity
n::tagintegral_c_tagConstant time.
n::value_type An integral type Constant time. Constant time.
n::typeIntegral ConstantIntegral Constant Constant time.
next<n>::typeIntegral ConstantIntegral Constant Constant time.
prior<n>::typeIntegral ConstantIntegral Constant Constant time.
n::value_type const c = n()
-
+

Expression semantics

- +
- - + + + + + @@ -89,11 +94,11 @@ corresponding run-time value of the wrapped integral type.

- - @@ -102,23 +107,25 @@ such that c::value + - -
ExpressionSemantics
ExpressionSemantics
n::tagn's tag type; n::tag::value is n's +conversion rank.
n::value_type A cv-unqualified type of n::value.
is_same<n::type,n>::value == true.
next<n>::typeAn Integral Constant c of type n::value_type +An Integral Constant c of type n::value_type such that c::value == n::value + 1.
prior<n>::typeAn Integral Constant c of type n::value_type +An Integral Constant c of type n::value_type such that c::value == n::value - 1.
n::value_type const c = n()
- + + diff --git a/doc/refmanual/integral-sequence-wrapper.html b/doc/refmanual/integral-sequence-wrapper.html index cfe4537..ded0def 100644 --- a/doc/refmanual/integral-sequence-wrapper.html +++ b/doc/refmanual/integral-sequence-wrapper.html @@ -1,35 +1,32 @@ - - - - + The MPL Reference Manual: Integral Sequence Wrapper - +
Front Page / Sequences / Concepts / Integral Sequence Wrapper
-

Integral Sequence Wrapper

-
+

Integral Sequence Wrapper

+

Description

-

An Integral Sequence Wrapper is a class template that provides a concise -interface for creating a corresponding sequence of Integral Constants. In -particular, assuming that seq is a name of the wrapper's underlying -sequence and c1,c2,... cn are integral constants of an integral type T to -be stored in the sequence, the wrapper provides us with the following +

An Integral Sequence Wrapper is a class template that provides a concise +interface for creating a corresponding sequence of Integral Constants. In +particular, assuming that seq is a name of the wrapper's underlying +sequence and c1,c2,... cn are integral constants of an integral type T to +be stored in the sequence, the wrapper provides us with the following notation:

seq_c<T,c1,c2,... cn>
-

If seq is a Variadic Sequence, numbered wrapper forms are +

If seq is a Variadic Sequence, numbered wrapper forms are also avaialable:

@@ -37,29 +34,29 @@ also avaialable:

-
+

Expression requirements

-

In the following table and subsequent specifications, seq is a placeholder token for the -Integral Sequence Wrapper's underlying sequence's name.

- +

In the following table and subsequent specifications, seq is a placeholder token for the +Integral Sequence Wrapper's underlying sequence's name.

+
- - - + + + - + - + @@ -67,11 +64,11 @@ also avaialable:

- + - + @@ -81,21 +78,20 @@ also avaialable:

ExpressionTypeComplexity
ExpressionTypeComplexity
seq_c<T,c1,c2,... cn>Forward SequenceForward Sequence Amortized constant time.
seq_c<T,c1,c2,... cn>::typeForward SequenceForward Sequence Amortized constant time.
seq_c<T,c1,c2,... cn>::value_type Amortized constant time.
seqn_c<T,c1,c2,... cn>Forward SequenceForward Sequence Amortized constant time.
seqn_c<T,c1,c2,... cn>::typeForward SequenceForward Sequence Amortized constant time.
seqn_c<T,c1,c2,... cn>::value_type
-
+

Expression semantics

 typedef seq_c<T,c1,c2,... cn> s;
 typedef seqn_c<T,c1,c2,... cn> s;
 
- +
-
Semantics:s is a sequence seq of integral constant wrappers integral_c<T,c1>, integral_c<T,c2>, ... integral_c<T,cn>.
Postcondition:

size<s>::value == n.

- typedef seq_c<T,c1,c2,... cn>::type s; typedef seqn_c<T,c1,c2,... cn>::type s; - +
- @@ -125,7 +121,7 @@ typedef seqn_c<T,c1,c2,... < typedef seq_c<T,c1,c2,... cn>::value_type t; typedef seqn_c<T,c1,c2,... cn>::value_type t; -
Semantics:s is identical to -seqn<integral_c<T,c1>,integral_c<T,c2>, +
Semantics:s is identical to +seqn<integral_c<T,c1>,integral_c<T,c2>, ... integral_c<T,cn> >.
+
@@ -134,23 +130,24 @@ typedef seqn_c<T,c1,c2,... <
-
+ - - - + + diff --git a/doc/refmanual/intrinsic-metafunctions.html b/doc/refmanual/intrinsic-metafunctions.html index f5e64ab..e21fd6c 100644 --- a/doc/refmanual/intrinsic-metafunctions.html +++ b/doc/refmanual/intrinsic-metafunctions.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Intrinsic Metafunctions @@ -15,53 +12,54 @@
Front Page / Sequences / Intrinsic Metafunctions
-

Intrinsic Metafunctions

-

The metafunctions that form the essential interface of sequence classes -documented in the corresponding sequence concepts are known as -intrinsic sequence operations. They differ from generic -sequence algorithms in that, in general, they need to be implemented -from scratch for each new sequence class [1].

-

It's worth noting that STL counterparts of these metafunctions are +

Intrinsic Metafunctions

+

The metafunctions that form the essential interface of sequence classes +documented in the corresponding sequence concepts are known as +intrinsic sequence operations. They differ from generic +sequence algorithms in that, in general, they need to be implemented +from scratch for each new sequence class [1].

+

It's worth noting that STL counterparts of these metafunctions are usually implemented as member functions.

- +
- +
[1]In practice, many of intrinsic metafunctions offer a -default implementation that will work in majority of cases, given -that you've implemented the core functionality they rely on (such -as begin / end).
[1]In practice, many of intrinsic metafunctions offer a +default implementation that will work in majority of cases, given +that you've implemented the core functionality they rely on (such +as begin / end).
-
- + diff --git a/doc/refmanual/introspection.html b/doc/refmanual/introspection.html index 1b2f60e..4bcfd0b 100644 --- a/doc/refmanual/introspection.html +++ b/doc/refmanual/introspection.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Introspection @@ -15,15 +12,17 @@ Front Page / Macros / Introspection
- + diff --git a/doc/refmanual/invocation.html b/doc/refmanual/invocation.html index a9972dc..50a98dc 100644 --- a/doc/refmanual/invocation.html +++ b/doc/refmanual/invocation.html @@ -1,31 +1,29 @@ - - - - + The MPL Reference Manual: Invocation - +
Front Page / Metafunctions / Invocation
- - + + diff --git a/doc/refmanual/is-sequence.html b/doc/refmanual/is-sequence.html index bf0dc6a..86e808b 100644 --- a/doc/refmanual/is-sequence.html +++ b/doc/refmanual/is-sequence.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: is_sequence @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / is_sequence
-

is_sequence

-
+

is_sequence

+

Synopsis

 template<
@@ -28,29 +25,29 @@ struct is_sequence
 };
 
-
+

Description

-

Returns a boolean Integral Constant c such that c::value == true if and -only if X is a model of Forward Sequence.

+

Returns a boolean Integral Constant c such that c::value == true if and +only if X is a model of Forward Sequence.

-
+ -
+

Parameters

- +
- - - + + + @@ -61,16 +58,17 @@ only if X is a model of
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

-typedef is_sequence<X>::type c; 
+typedef is_sequence<X>::type c;
 
- +
- +
Return type:Boolean Integral Constant.
Return type:

Boolean Integral Constant.

+
Semantics:

Equivalent to

@@ -81,11 +79,11 @@ typedef not_< is_same< 
 
-
+

Complexity

Amortized constant time.

-
+

Example

 struct UDT {};
@@ -102,15 +100,16 @@ struct UDT {};
 BOOST_MPL_ASSERT(( is_sequence< vector<int> > ));
 
- - + diff --git a/doc/refmanual/iter-fold.html b/doc/refmanual/iter-fold.html index 396f1e5..9051ee3 100644 --- a/doc/refmanual/iter-fold.html +++ b/doc/refmanual/iter-fold.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: iter_fold @@ -15,8 +12,8 @@ Front Page / Algorithms / Iteration Algorithms / iter_fold
-

iter_fold

-
+

iter_fold

+

Synopsis

 template<
@@ -30,35 +27,35 @@ struct iter_fold
 };
 
-
+

Description

-

Returns the result of the successive application of binary ForwardOp to the result -of the previous ForwardOp invocation (State if it's the first call) and each +

Returns the result of the successive application of binary ForwardOp to the result +of the previous ForwardOp invocation (State if it's the first call) and each iterator in the range [begin<Sequence>::type, end<Sequence>::type) in order.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -67,70 +64,72 @@ iterator in the range [ForwardOp - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to iterate.
StateBinary Lambda ExpressionBinary Lambda Expression The operation to be executed on forward traversal.
-
+

Expression semantics

-

For any Forward Sequence s, binary Lambda Expression op, and an +

For any Forward Sequence s, binary Lambda Expression op, and an arbitrary type state:

-typedef iter_fold<s,state,op>::type t; 
+typedef iter_fold<s,state,op>::type t;
 
- +
- +
Return type:A type.
Return type:

A type.

+
Semantics:

Equivalent to

-typedef begin<Sequence>::type i1;
+typedef begin<s>::type i1;
 typedef apply<op,state,i1>::type state1;
 typedef next<i1>::type i2;
 typedef apply<op,state1,i2>::type state2;
 ...
-typedef apply<op,staten-1,in>::type staten; 
-typedef next<in>::type last; 
+typedef apply<op,staten-1,in>::type staten;
+typedef next<in>::type last;
 typedef staten t;
 
-

where n == size<s>::value and last is identical to end<s>::type; equivalent +

where n == size<s>::value and last is identical to end<s>::type; equivalent to typedef state t; if empty<s>::value == true.

-
+

Complexity

Linear. Exactly size<s>::value applications of op.

-
+

Example

 typedef vector_c<int,5,-1,0,7,2,0,-5,4> numbers;
 typedef iter_fold<
       numbers
     , begin<numbers>::type
-    , if_< less< deref<_1>, deref<_2> >,_2,_1 >
+    , if_< less< deref<_1>, deref<_2> >,_2,_1 >
     >::type max_element_iter;
 
 BOOST_MPL_ASSERT_RELATION( deref<max_element_iter>::type::value, ==, 7 );
 
- - + diff --git a/doc/refmanual/iteration-algorithms.html b/doc/refmanual/iteration-algorithms.html index 4108b4e..09a5e54 100644 --- a/doc/refmanual/iteration-algorithms.html +++ b/doc/refmanual/iteration-algorithms.html @@ -1,50 +1,48 @@ - - - - + The MPL Reference Manual: Iteration Algorithms - +
Front Page / Algorithms / Iteration Algorithms
-

Iteration Algorithms

-

Iteration algorithms are the basic building blocks behind many of the -MPL's algorithms, and are usually the first place to look at when -starting to build a new one. Abstracting away the details of sequence -iteration and employing various optimizations such as recursion -unrolling, they provide significant advantages over a hand-coded +

Iteration Algorithms

+

Iteration algorithms are the basic building blocks behind many of the +MPL's algorithms, and are usually the first place to look at when +starting to build a new one. Abstracting away the details of sequence +iteration and employing various optimizations such as recursion +unrolling, they provide significant advantages over a hand-coded approach.

- -
- - + + diff --git a/doc/refmanual/iterator-category.html b/doc/refmanual/iterator-category.html index a1c8169..708ff11 100644 --- a/doc/refmanual/iterator-category.html +++ b/doc/refmanual/iterator-category.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: iterator_category @@ -15,8 +12,8 @@ Front Page / Iterators / Iterator Metafunctions / iterator_category
-

iterator_category

-
+

iterator_category

+

Synopsis

 template<
@@ -28,7 +25,7 @@ struct iterator_category
 
-
+

Description

Returns one of the following iterator category tags:

-
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
IteratorForward IteratorForward Iterator The iterator to obtain a category for.
-
+

Expression semantics

-

For any Forward Iterators iter:

+

For any Forward Iterators iter:

-typedef iterator_category<iter>::type tag; 
+typedef iterator_category<iter>::type tag;
 
- +
- + - + -
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:tag is forward_iterator_tag if iter is a model of Forward Iterator, -bidirectional_iterator_tag if iter is a model of Bidirectional Iterator, -or random_access_iterator_tag if iter is a model of Random Access Iterator;
Semantics:

tag is forward_iterator_tag if iter is a model of Forward Iterator, +bidirectional_iterator_tag if iter is a model of Bidirectional Iterator, +or random_access_iterator_tag if iter is a model of Random Access Iterator;

+
Postcondition:
+
Postcondition:
forward_iterator_tag::value < bidirectional_iterator_tag::value,
-
bidirectional_iterator_tag::value < random_access_iterator_tag::value.
+

bidirectional_iterator_tag::value < random_access_iterator_tag::value.

+
-
+

Complexity

Amortized constant time.

-
+

Example

 template< typename Tag, typename Iterator >
@@ -120,14 +120,15 @@ struct algorithm
 };
 
- - + diff --git a/doc/refmanual/iterator-metafunctions.html b/doc/refmanual/iterator-metafunctions.html index f762449..32a64bd 100644 --- a/doc/refmanual/iterator-metafunctions.html +++ b/doc/refmanual/iterator-metafunctions.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Iterator Metafunctions @@ -15,19 +12,24 @@ Front Page / Iterators / Iterator Metafunctions
-

Iterator Metafunctions

- +

Iterator Metafunctions

+

From the MPL standpoint, all iterators are opaque types. Incrementing, +dereferencing and the rest of iterator functionality is accessed +through the associated iterator metafunctions.

+
- + diff --git a/doc/refmanual/iterator-range.html b/doc/refmanual/iterator-range.html index 2a3f127..ddfb73a 100644 --- a/doc/refmanual/iterator-range.html +++ b/doc/refmanual/iterator-range.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: iterator_range @@ -15,8 +12,8 @@ Front Page / Sequences / Views / iterator_range
-

iterator_range

-
+

iterator_range

+

Synopsis

 template<
@@ -30,60 +27,60 @@ struct iterator_range
 };
 
-
+

Description

A view into subset of sequence elements identified by a pair of iterators.

-
+ -
+

Model of

-
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
First, LastForward IteratorForward Iterator Iterators identifying the view's boundaries.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Forward Sequence.

-

In the following table, v is an instance of iterator_range, first and last are -iterators into a Forward Sequence, and [first, last) form a valid range.

- +where they differ from, or are not defined in Forward Sequence.

+

In the following table, v is an instance of iterator_range, first and last are +iterators into a Forward Sequence, and [first, last) form a valid range.

+
- - + + @@ -98,28 +95,29 @@ iterators into a Forward Seq
ExpressionSemantics
ExpressionSemantics
-
+

Example

 typedef range_c<int,0,100> r;
 typedef advance_c< begin<r>::type,10 >::type first;
 typedef advance_c< end<r>::type,-10 >::type last;
 
-BOOST_MPL_ASSERT(( equal< 
+BOOST_MPL_ASSERT(( equal<
       iterator_range<first,last>
     , range_c<int,10,90>
     > ));
 
- - + diff --git a/doc/refmanual/iterators-concepts.html b/doc/refmanual/iterators-concepts.html index 7341d0a..91ad965 100644 --- a/doc/refmanual/iterators-concepts.html +++ b/doc/refmanual/iterators-concepts.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Concepts @@ -14,33 +11,34 @@
Front Page / Iterators / Concepts
-
-

Concepts

-

All iterators in MPL are classified into three iterator concepts, or +

+

Concepts

+

All iterators in MPL are classified into three iterator concepts, or categories, named according to the type of traversal provided. The -categories are: Forward Iterator, Bidirectional Iterator, and -Random Access Iterator. The concepts are hierarchical: -Random Access Iterator is a refinement of Bidirectional Iterator, -which, in its turn, is a refinement of Forward Iterator.

-

Because of the inherently immutable nature of the value access, MPL -iterators escape the problems of the traversal-only categorization -discussed at length in [n1550].

- +categories are: Forward Iterator, Bidirectional Iterator, and +Random Access Iterator. The concepts are hierarchical: +Random Access Iterator is a refinement of Bidirectional Iterator, +which, in its turn, is a refinement of Forward Iterator.

+

Because of the inherently immutable nature of the value access, MPL +iterators escape the problems of the traversal-only categorization +discussed at length in [n1550].

+
- +
[n1550]http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1550.htm
[n1550]http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1550.htm
-
- + diff --git a/doc/refmanual/iterators.html b/doc/refmanual/iterators.html index e04e992..306b17e 100644 --- a/doc/refmanual/iterators.html +++ b/doc/refmanual/iterators.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Iterators @@ -15,24 +12,25 @@ Front Page / Iterators
-

Iterators

-

Iterators are generic means of addressing a particular element or a range +

Iterators

+

Iterators are generic means of addressing a particular element or a range of sequential elements in a sequence. They are also a mechanism that makes -it possible to decouple algorithms from concrete compile-time sequence -implementations. Under the hood, all MPL sequence algorithms are -implemented in terms of iterators. In particular, that means that they -will work on any custom compile-time sequence, given that the appropriate +it possible to decouple algorithms from concrete compile-time sequence +implementations. Under the hood, all MPL sequence algorithms are +implemented in terms of iterators. In particular, that means that they +will work on any custom compile-time sequence, given that the appropriate iterator inteface is provided.

-
- + diff --git a/doc/refmanual/joint-view.html b/doc/refmanual/joint-view.html index da8f24d..97948c8 100644 --- a/doc/refmanual/joint-view.html +++ b/doc/refmanual/joint-view.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: joint_view @@ -15,8 +12,8 @@ Front Page / Sequences / Views / joint_view
-

joint_view

-
+

joint_view

+

Synopsis

 template<
@@ -30,60 +27,60 @@ struct joint_view
 };
 
-
+

Description

-

A view into the sequence of elements formed by concatenating Sequence1 +

A view into the sequence of elements formed by concatenating Sequence1 and Sequence2 elements.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
Sequence1, Sequence2Forward SequenceForward Sequence Sequences to create a view on.
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Forward Sequence.

-

In the following table, v is an instance of joint_view, s1 and s2 are arbitrary -Forward Sequences.

- +where they differ from, or are not defined in Forward Sequence.

+

In the following table, v is an instance of joint_view, s1 and s2 are arbitrary +Forward Sequences.

+
- - + + @@ -92,18 +89,18 @@ where they differ from, or are not defined in joint_view<s1,s2>::type - +linear complexity; see Forward Sequence.
ExpressionSemantics
ExpressionSemantics
A lazy Forward Sequence of all the elements in the +A lazy Forward Sequence of all the elements in the ranges [begin<s1>::type, end<s1>::type), [begin<s2>::type, end<s2>::type).
size<v>::type The size of v; size<v>::value == size<s1>::value + size<s2>::value; -linear complexity; see Forward Sequence.
-
+

Example

 typedef joint_view<
@@ -114,15 +111,16 @@ typedef joint_view<
 BOOST_MPL_ASSERT(( equal< numbers, range_c<int,0,15> > ));
 
- - + diff --git a/doc/refmanual/key-type.html b/doc/refmanual/key-type.html index 59b1e95..1bbb86b 100644 --- a/doc/refmanual/key-type.html +++ b/doc/refmanual/key-type.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: key_type @@ -15,8 +12,8 @@ Front Page / Sequences / Intrinsic Metafunctions / key_type
-

key_type

-
+

key_type

+

Synopsis

 template<
@@ -29,54 +26,54 @@ struct key_type
 };
 
-
+

Description

-

Returns the key that would be used to identify X in Sequence.

+

Returns the key that would be used to identify X in Sequence.

-
+ -
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceAssociative SequenceAssociative Sequence A sequence to query.
X Any typeThe type to get the key for.The type to get the key for.
-
+

Expression semantics

-

For any Associative Sequence s, iterators pos1 and pos2 in s, and an +

For any Associative Sequence s, iterators pos1 and pos2 in s, and an artibrary type x:

-typedef key_type<s,x>::type k; 
+typedef key_type<s,x>::type k;
 
- +
@@ -84,7 +81,7 @@ typedef key_type<s,x>::ty - + @@ -92,11 +89,11 @@ typedef key_type<s,x>::ty
Precondition:x can be put in s.
Semantics:k is the key that would be used to identify x in s.
Semantics:k is the key that would be used to identify x in s.
Postcondition:If key_type< s,deref<pos1>::type >::type is identical to key_type< s,deref<pos2>::type >::type then pos1 is identical to pos2.
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef key_type< map<>,pair<int,unsigned> >::type k1;
@@ -106,15 +103,16 @@ typedef key_type< BOOST_MPL_ASSERT(( is_same< k2,pair<int,unsigned> > ));
 
- - + diff --git a/doc/refmanual/lambda-expression.html b/doc/refmanual/lambda-expression.html index c697dff..fe545dd 100644 --- a/doc/refmanual/lambda-expression.html +++ b/doc/refmanual/lambda-expression.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Lambda Expression @@ -15,40 +12,41 @@ Front Page / Metafunctions / Concepts / Lambda Expression
-

Lambda Expression

-
+

Lambda Expression

+

Description

-

A Lambda Expression is a compile-time invocable entity in either of the following two +

A Lambda Expression is a compile-time invocable entity in either of the following two forms:

Most of the MPL components accept either of those, and the concept gives us a consice way to describe these requirements.

-
+

Expression requirements

-

See corresponding Metafunction Class and Placeholder Expression specifications.

+

See corresponding Metafunction Class and Placeholder Expression specifications.

-
+

Models

- - + diff --git a/doc/refmanual/lambda.html b/doc/refmanual/lambda.html index 7b67774..57920ab 100644 --- a/doc/refmanual/lambda.html +++ b/doc/refmanual/lambda.html @@ -1,25 +1,22 @@ - - - - + The MPL Reference Manual: lambda - - +
Front Page / Metafunctions / Composition and Argument Binding / lambda
+
Front Page / Metafunctions / Composition and Argument Binding / lambda
-

lambda

-
+

lambda

+

Synopsis

-template< 
+template<
       typename X
     , typename Tag = unspecified
     >
@@ -29,29 +26,29 @@ struct lambda
 };
 
-
+

Description

-

If X is a Placeholder Expression, transforms X into a corresponding -Metafunction Class, otherwise X is returned unchanged.

+

If X is a Placeholder Expression, transforms X into a corresponding +Metafunction Class, otherwise X is returned unchanged.

-
+ -
+

Parameters

- +
- - - + + + @@ -66,20 +63,21 @@ struct lambda
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For arbitrary types x and tag:

 typedef lambda<x>::type f;
 
- +
- + -
Return type:Metafunction Class.
Return type:

Metafunction Class.

+
Semantics:

If x is a Placeholder Expression in a general form X<a1,...an>, where -X is a class template and a1,... an are arbitrary types, equivalent +

Semantics:

If x is a Placeholder Expression in a general form X<a1,...an>, where +X is a class template and a1,... an are arbitrary types, equivalent to

 typedef protect< bind<
@@ -96,14 +94,15 @@ typedef protect< 
 typedef lambda<x,tag>::type f;
 
- +
- + -
Return type:Metafunction Class.
Return type:

Metafunction Class.

+
Semantics:

If x is a Placeholder Expression in a general form X<a1,...an>, where -X is a class template and a1,... an are arbitrary types, equivalent +

Semantics:

If x is a Placeholder Expression in a general form X<a1,...an>, where +X is a class template and a1,... an are arbitrary types, equivalent to

 typedef protect< bind<
@@ -117,7 +116,7 @@ typedef protect< 
+

Example

 template< typename N1, typename N2 > struct int_plus
@@ -125,8 +124,8 @@ template< typename N1, typename N2 > struct int_plus
 {
 };
 
-typedef lambda< int_plus<_1, int_<42> > >::type f1;
-typedef bind< quote2<int_plus>, _1, int_<42> > f2;
+typedef lambda< int_plus<_1, int_<42> > >::type f1;
+typedef bind< quote2<int_plus>, _1, int_<42> > f2;
 
 typedef f1::apply<42>::type r1;
 typedef f2::apply<42>::type r2;
@@ -135,15 +134,16 @@ typedef f2::apply<42>::type
 BOOST_MPL_ASSERT_RELATION( r2::value, ==, 84 );
 
- - - + + diff --git a/doc/refmanual/less-equal.html b/doc/refmanual/less-equal.html index 232ee62..9d5f83d 100644 --- a/doc/refmanual/less-equal.html +++ b/doc/refmanual/less-equal.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: less_equal @@ -15,8 +12,8 @@
Front Page / Metafunctions / Comparisons / less_equal
-

less_equal

-
+

less_equal

+

Synopsis

 template<
@@ -29,58 +26,59 @@ struct less_equal
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if T1 is less than or equal to T2.

+

Returns a true-valued Integral Constant if T1 is less than or equal to T2.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

-typedef less_equal<c1,c2>::type r; 
+typedef less_equal<c1,c2>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -92,13 +90,14 @@ typedef bool_< (c1::value <=
 
-typedef less_equal<c1,c2> r; 
+typedef less_equal<c1,c2> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -109,11 +108,11 @@ struct r : less_equal<c1,c
 
-
+

Complexity

Amortized constant time.

-
diff --git a/doc/refmanual/less.html b/doc/refmanual/less.html index f830ed9..2418db1 100644 --- a/doc/refmanual/less.html +++ b/doc/refmanual/less.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: less @@ -15,8 +12,8 @@ Front Page / Metafunctions / Comparisons / less
-

less

-
+

less

+

Synopsis

 template<
@@ -29,58 +26,59 @@ struct less
 };
 
-
+

Description

-

Returns a true-valued Integral Constant if T1 is less than T2.

+

Returns a true-valued Integral Constant if T1 is less than T2.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

-typedef less<c1,c2>::type r; 
+typedef less<c1,c2>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -92,13 +90,14 @@ typedef bool_< (c1::value < c
 
-typedef less<c1,c2> r; 
+typedef less<c1,c2> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -109,11 +108,11 @@ struct r : less<c1,c2>::type
 
-
+

Complexity

Amortized constant time.

-
+

Example

 BOOST_MPL_ASSERT(( less< int_<0>, int_<10> > ));
@@ -121,15 +120,16 @@ struct r : less<c1,c2>::type
 BOOST_MPL_ASSERT_NOT(( less< long_<10>, int_<10> > ));
 
- - + diff --git a/doc/refmanual/limit-list-size.html b/doc/refmanual/limit-list-size.html index aeeda52..23b4c89 100644 --- a/doc/refmanual/limit-list-size.html +++ b/doc/refmanual/limit-list-size.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_LIST_SIZE @@ -14,9 +11,9 @@
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_LIST_SIZE
-
-

BOOST_MPL_LIMIT_LIST_SIZE

-
+
+

BOOST_MPL_LIMIT_LIST_SIZE

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_LIST_SIZE)
@@ -26,21 +23,21 @@
 #endif
 
-
+

Description

BOOST_MPL_LIMIT_LIST_SIZE is an overridable configuration macro regulating -the maximum arity of the list's and list_c's variadic forms. In this +the maximum arity of the list's and list_c's variadic forms. In this implementation of the library, BOOST_MPL_LIMIT_LIST_SIZE has a default value of 20. To override the default limit, define BOOST_MPL_LIMIT_LIST_SIZE to -the desired maximum arity rounded up to the nearest multiple of ten before +the desired maximum arity rounded up to the nearest multiple of ten before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 #define BOOST_MPL_LIMIT_LIST_SIZE 10
 #include <boost/mpl/list.hpp>
 
@@ -51,15 +48,16 @@ typedef list_c<int,1,2,3,4,5,6
 // typedef list_c<int,1,2,3,4,5,6,7,8,9,10,11> l_11; // error!
 
- - + diff --git a/doc/refmanual/limit-map-size.html b/doc/refmanual/limit-map-size.html index aace3f2..d4e04b2 100644 --- a/doc/refmanual/limit-map-size.html +++ b/doc/refmanual/limit-map-size.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_MAP_SIZE - +
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_MAP_SIZE
-
-

BOOST_MPL_LIMIT_MAP_SIZE

-
+
+

BOOST_MPL_LIMIT_MAP_SIZE

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_MAP_SIZE)
@@ -26,21 +23,21 @@
 #endif
 
-
+

Description

BOOST_MPL_LIMIT_MAP_SIZE is an overridable configuration macro regulating -the maximum arity of the map's variadic form. In this +the maximum arity of the map's variadic form. In this implementation of the library, BOOST_MPL_LIMIT_MAP_SIZE has a default value of 20. To override the default limit, define BOOST_MPL_LIMIT_MAP_SIZE to -the desired maximum arity rounded up to the nearest multiple of ten before +the desired maximum arity rounded up to the nearest multiple of ten before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 #define BOOST_MPL_LIMIT_MAP_SIZE 10
 #include <boost/mpl/map.hpp>
 #include <boost/mpl/pair.hpp>
@@ -58,15 +55,16 @@ typedef map< ints<1>, ints&
 //     ints<6>, ints<7>, ints<8>, ints<9>, ints<10>, ints<11> > m_11; // error!
 
- - - + + diff --git a/doc/refmanual/limit-metafunction-arity.html b/doc/refmanual/limit-metafunction-arity.html index e1458dc..948e46f 100644 --- a/doc/refmanual/limit-metafunction-arity.html +++ b/doc/refmanual/limit-metafunction-arity.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_METAFUNCTION_ARITY @@ -14,9 +11,9 @@
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_METAFUNCTION_ARITY
-
-

BOOST_MPL_LIMIT_METAFUNCTION_ARITY

-
+
+

BOOST_MPL_LIMIT_METAFUNCTION_ARITY

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
@@ -26,22 +23,22 @@
 #endif
 
-
+

Description

-

BOOST_MPL_LIMIT_METAFUNCTION_ARITY is an overridable configuration macro -regulating the maximum supported arity of metafunctions and -metafunction classes. In this implementation of the -library, BOOST_MPL_LIMIT_METAFUNCTION_ARITY has a default value of 5. To +

BOOST_MPL_LIMIT_METAFUNCTION_ARITY is an overridable configuration macro +regulating the maximum supported arity of metafunctions and +metafunction classes. In this implementation of the +library, BOOST_MPL_LIMIT_METAFUNCTION_ARITY has a default value of 5. To override the default limit, define BOOST_MPL_LIMIT_METAFUNCTION_ARITY to -the desired maximum arity before including any library header. +the desired maximum arity before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 2
 #include <boost/mpl/apply.hpp>
 
@@ -57,19 +54,20 @@ template< typename T1, typename T2, typename T3 > struct third
     typedef T3 type;
 };
 
-typedef apply< second<_1,_2_>,int,long >::type r1;
-// typedef apply< third<_1,_2_,_3>,int,long,float >::type r2; // error!
+typedef apply< second<_1,_2_>,int,long >::type r1;
+// typedef apply< third<_1,_2_,_3>,int,long,float >::type r2; // error!
 
- - + diff --git a/doc/refmanual/limit-set-size.html b/doc/refmanual/limit-set-size.html index 6d39fcd..c42d404 100644 --- a/doc/refmanual/limit-set-size.html +++ b/doc/refmanual/limit-set-size.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_SET_SIZE @@ -14,9 +11,9 @@
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_SET_SIZE
-
-

BOOST_MPL_LIMIT_SET_SIZE

-
+
+

BOOST_MPL_LIMIT_SET_SIZE

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_SET_SIZE)
@@ -26,21 +23,21 @@
 #endif
 
-
+

Description

BOOST_MPL_LIMIT_SET_SIZE is an overridable configuration macro regulating -the maximum arity of the set's and set_c's variadic forms. In this +the maximum arity of the set's and set_c's variadic forms. In this implementation of the library, BOOST_MPL_LIMIT_SET_SIZE has a default value of 20. To override the default limit, define BOOST_MPL_LIMIT_SET_SIZE to -the desired maximum arity rounded up to the nearest multiple of ten before +the desired maximum arity rounded up to the nearest multiple of ten before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 #define BOOST_MPL_LIMIT_SET_SIZE 10
 #include <boost/mpl/set.hpp>
 
@@ -51,15 +48,16 @@ typedef set_c<int,1,2,3,4,5,6,7
 // typedef set_c<int,1,2,3,4,5,6,7,8,9,10,11> s_11; // error!
 
- - + diff --git a/doc/refmanual/limit-unrolling.html b/doc/refmanual/limit-unrolling.html index b97d440..40ff4f7 100644 --- a/doc/refmanual/limit-unrolling.html +++ b/doc/refmanual/limit-unrolling.html @@ -1,22 +1,19 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_UNROLLING - +
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_UNROLLING
-
-

BOOST_MPL_LIMIT_UNROLLING

-
+
+

BOOST_MPL_LIMIT_UNROLLING

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_UNROLLING)
@@ -26,30 +23,31 @@
 #endif
 
-
+

Description

BOOST_MPL_LIMIT_UNROLLING is an overridable configuration macro regulating -the unrolling depth of the library's iteration algorithms. In this implementation -of the library, BOOST_MPL_LIMIT_UNROLLING has a default value of 4. To -override the default, define BOOST_MPL_LIMIT_UNROLLING to the desired -value before including any library header. +the unrolling depth of the library's iteration algorithms. In this implementation +of the library, BOOST_MPL_LIMIT_UNROLLING has a default value of 4. To +override the default, define BOOST_MPL_LIMIT_UNROLLING to the desired +value before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-

Except for overall library performace, overriding the +

Except for overall library performace, overriding the BOOST_MPL_LIMIT_UNROLLING's default value has no user-observable effects.

- - - + + diff --git a/doc/refmanual/limit-vector-size.html b/doc/refmanual/limit-vector-size.html index 4fee014..1fd07e7 100644 --- a/doc/refmanual/limit-vector-size.html +++ b/doc/refmanual/limit-vector-size.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: BOOST_MPL_LIMIT_VECTOR_SIZE @@ -14,9 +11,9 @@
Front Page / Macros / Configuration / BOOST_MPL_LIMIT_VECTOR_SIZE
-
-

BOOST_MPL_LIMIT_VECTOR_SIZE

-
+
+

BOOST_MPL_LIMIT_VECTOR_SIZE

+

Synopsis

 #if !defined(BOOST_MPL_LIMIT_VECTOR_SIZE)
@@ -26,21 +23,21 @@
 #endif
 
-
+

Description

BOOST_MPL_LIMIT_VECTOR_SIZE is an overridable configuration macro regulating -the maximum arity of the vector's and vector_c's variadic forms. In this +the maximum arity of the vector's and vector_c's variadic forms. In this implementation of the library, BOOST_MPL_LIMIT_VECTOR_SIZE has a default value of 20. To override the default limit, define BOOST_MPL_LIMIT_VECTOR_SIZE to -the desired maximum arity rounded up to the nearest multiple of ten before +the desired maximum arity rounded up to the nearest multiple of ten before including any library header. [Note: Overriding will take effect -only if the library is configured not to use preprocessed headers. See -BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

+only if the library is configured not to use preprocessed headers. See +BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS for more information. — end note]

-
+

Example

-#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 #define BOOST_MPL_LIMIT_VECTOR_SIZE 10
 #include <boost/mpl/vector.hpp>
 
@@ -51,15 +48,16 @@ typedef vector_c<int,1,2,3,4
 // typedef vector_c<int,1,2,3,4,5,6,7,8,9,10,11> v_11; // error!
 
- - + diff --git a/doc/refmanual/list-c.html b/doc/refmanual/list-c.html index d1e0572..916adae 100644 --- a/doc/refmanual/list-c.html +++ b/doc/refmanual/list-c.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: list_c @@ -15,23 +12,23 @@ Front Page / Sequences / Classes / list_c
-

list_c

-
+

list_c

+

Description

-

list_c is an Integral Sequence Wrapper for list. As such, it shares -all list characteristics and requirements, and differs only in the way the +

list_c is an Integral Sequence Wrapper for list. As such, it shares +all list characteristics and requirements, and differs only in the way the original sequence content is specified.

-
+

Header

- +
- - + + @@ -44,29 +41,29 @@ original sequence content is specified.

Sequence formHeader
Sequence formHeader
-
+ -
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in list.

+where they differ from, or are not defined in list.

- +
- - + + @@ -75,11 +72,11 @@ where they differ from, or are not defined in listn_c<T,c1,c2,... cn> - +see Integral Sequence Wrapper. +see Integral Sequence Wrapper. +Integral Sequence Wrapper.
ExpressionSemantics
ExpressionSemantics
A list of integral constant wrappers +A list of integral constant wrappers integral_c<T,c1>, integral_c<T,c2>, ... integral_c<T,cn>; -see Integral Sequence Wrapper.
 list_c<T,c1,c2,... cn>::type
@@ -90,7 +87,7 @@ see Integral Sequen
 integral_c<T,c1>,
 integral_c<T,c2>, ...
 integral_c<T,cn> >;
-see Integral Sequence Wrapper.
 list_c<T,c1,c2,... cn>::value_type
@@ -98,12 +95,12 @@ see Integral Sequen
 
Identical to T; see -Integral Sequence Wrapper.
-
+

Example

 typedef list_c<int,1,2,3,5,7,12,19,31> fibonacci;
@@ -112,15 +109,16 @@ typedef push_front<fibonac
 BOOST_MPL_ASSERT_RELATION( front<fibonacci2>::type::value, ==, 1 );
 
- - + diff --git a/doc/refmanual/list.html b/doc/refmanual/list.html index e904ebc..e36043d 100644 --- a/doc/refmanual/list.html +++ b/doc/refmanual/list.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: list @@ -15,23 +12,23 @@ Front Page / Sequences / Classes / list
-

list

-
+

list

+

Description

-

A list is a variadic, forward, extensible sequence of types that -supports constant-time insertion and removal of elements at the beginning, and +

A list is a variadic, forward, extensible sequence of types that +supports constant-time insertion and removal of elements at the beginning, and linear-time insertion and removal of elements at the end and in the middle.

-
+

Header

- +
- - + + @@ -44,27 +41,27 @@ linear-time insertion and removal of elements at the end and in the middle.

Sequence formHeader
Sequence formHeader
-
+ -
+

Expression semantics

-

In the following table, l is a list, pos and last are iterators into l, -r is a Forward Sequence, and t1,t2,... tn and x are arbitrary types.

- +

In the following table, l is a list, pos and last are iterators into l, +r is a Forward Sequence, and t1,t2,... tn and x are arbitrary types.

+
- - + + @@ -74,7 +71,7 @@ linear-time insertion and removal of elements at the end and in the middle.

+Variadic Sequence. +see Variadic Sequence. +see Forward Sequence. +see Forward Sequence. - + - +Forward Sequence. +Forward Sequence. +[pos, end<l>::type); see Extensible Sequence. +[pos, end<l>::type); see Extensible Sequence. +Extensible Sequence. +[last, end<l>::type); see Extensible Sequence. - + +element; see Front Extensible Sequence. +Front Extensible Sequence.
ExpressionSemantics
ExpressionSemantics
list of elements t1,t2,... tn; see -Variadic Sequence.
 list<t1,t2,... tn>::type
@@ -82,66 +79,66 @@ linear-time insertion and removal of elements at the end and in the middle.

Identical to listn<t1,t2,... tn>; -see Variadic Sequence.
begin<l>::type An iterator to the beginning of l; -see Forward Sequence.
end<l>::type An iterator to the end of l; -see Forward Sequence.
size<l>::typeThe size of l; see Forward Sequence.The size of l; see Forward Sequence.
empty<l>::typeA boolean Integral Constant c such that +A boolean Integral Constant c such that c::value == true if and only if l is empty; see -Forward Sequence.
front<l>::type The first element in l; see -Forward Sequence.
insert<l,pos,x>::type A new list of following elements: [begin<l>::type, pos), x, -[pos, end<l>::type); see Extensible Sequence.
insert_range<l,pos,r>::type A new list of following elements: [begin<l>::type, pos), [begin<r>::type, end<r>::type) -[pos, end<l>::type); see Extensible Sequence.
erase<l,pos>::type A new list of following elements: [begin<l>::type, pos), [next<pos>::type, end<l>::type); see -Extensible Sequence.
erase<l,pos,last>::type A new list of following elements: [begin<l>::type, pos), -[last, end<l>::type); see Extensible Sequence.
clear<l>::typeAn empty list; see Extensible Sequence.An empty list; see Extensible Sequence.
push_front<l,x>::type A new list containing x as its first -element; see Front Extensible Sequence.
pop_front<l>::type A new list containing all but the first elements of l in the same order; see -Front Extensible Sequence.
-
+

Example

 typedef list<float,double,long double> floats;
@@ -150,15 +147,16 @@ typedef push_front<floatin
 BOOST_MPL_ASSERT(( is_same< front<types>::type, int > ));
 
- - + diff --git a/doc/refmanual/logical-operations.html b/doc/refmanual/logical-operations.html index c5a5f2f..6233188 100644 --- a/doc/refmanual/logical-operations.html +++ b/doc/refmanual/logical-operations.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Logical Operations @@ -15,17 +12,18 @@ Front Page / Metafunctions / Logical Operations
- + diff --git a/doc/refmanual/long.html b/doc/refmanual/long.html index 5f0910f..4dd6552 100644 --- a/doc/refmanual/long.html +++ b/doc/refmanual/long.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: long_ @@ -15,8 +12,8 @@ Front Page / Data Types / Numeric / long_
-

long_

-
+

long_

+

Synopsis

 template<
@@ -29,32 +26,32 @@ struct long_
 };
 
-
+

Description

-

An Integral Constant wrapper for long.

+

An Integral Constant wrapper for long.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -65,30 +62,30 @@ struct long_
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

The semantics of an expression are defined only -where they differ from, or are not defined in Integral Constant.

+where they differ from, or are not defined in Integral Constant.

For arbitrary integral constant n:

- +
- - + + -
ExpressionSemantics
ExpressionSemantics
long_<c>An Integral Constant x such that x::value == c +An Integral Constant x such that x::value == c and x::value_type is identical to long.
-
+

Example

 typedef long_<8> eight;
@@ -101,15 +98,16 @@ typedef long_<8> eight;
 assert( eight() == 8 );
 
- - + diff --git a/doc/refmanual/lower-bound.html b/doc/refmanual/lower-bound.html index d5ed850..d8346b3 100644 --- a/doc/refmanual/lower-bound.html +++ b/doc/refmanual/lower-bound.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: lower_bound @@ -15,14 +12,14 @@ Front Page / Algorithms / Querying Algorithms / lower_bound
-

lower_bound

-
+

lower_bound

+

Synopsis

 template<
       typename Sequence
     , typename T
-    , typename Pred = less<_1,_2>
+    , typename Pred = less<_1,_2>
     >
 struct lower_bound
 {
@@ -30,34 +27,34 @@ struct lower_bound
 };
 
-
+

Description

-

Returns the first position in the sorted Sequence where T could be inserted without +

Returns the first position in the sorted Sequence where T could be inserted without violating the ordering.

-
+ -
+

Parameters

- +
- - - + + + - + @@ -65,26 +62,27 @@ violating the ordering.

- +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sorted sequence to search in.
T A type to search a position for.
PredBinary Lambda ExpressionBinary Lambda Expression A search criteria.
-
+

Expression semantics

-

For any sorted Forward Sequence s, binary Lambda Expression pred, and +

For any sorted Forward Sequence s, binary Lambda Expression pred, and arbitrary type x:

-typedef lower_bound< s,x,pred >::type i; 
+typedef lower_bound< s,x,pred >::type i;
 
- +
- + -
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Semantics:

i is the furthermost iterator in [begin<s>::type, end<s>::type) such that, for every iterator +

Semantics:

i is the furthermost iterator in [begin<s>::type, end<s>::type) such that, for every iterator j in [begin<s>::type, i),

 apply< pred, deref<j>::type, x >::type::value == true
@@ -94,35 +92,36 @@ typedef lower_bound< s,x,
 
-
+

Complexity

-

The number of comparisons is logarithmic: at most log2( size<s>::value ) + 1. -If s is a Random Access Sequence then the number of steps through the range -is also logarithmic; otherwise, the number of steps is proportional to +

The number of comparisons is logarithmic: at most log2( size<s>::value ) + 1. +If s is a Random Access Sequence then the number of steps through the range +is also logarithmic; otherwise, the number of steps is proportional to size<s>::value.

-
+

Example

 typedef vector_c<int,1,2,3,3,3,5,8> numbers;
 typedef lower_bound< numbers, int_<3> >::type iter;
 
-BOOST_MPL_ASSERT_RELATION( 
+BOOST_MPL_ASSERT_RELATION(
       (distance< begin<numbers>::type,iter >::value), ==, 2
     );
 
 BOOST_MPL_ASSERT_RELATION( deref<iter>::type::value, ==, 3 );
 
- - + diff --git a/doc/refmanual/macros.html b/doc/refmanual/macros.html index f8f1496..815ca4d 100644 --- a/doc/refmanual/macros.html +++ b/doc/refmanual/macros.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Macros @@ -15,38 +12,39 @@ Front Page / Macros
-

Macros

-

Being a template metaprogramming framework, the MPL concentrates on -getting one thing done well and leaves most of the clearly -preprocessor-related tasks to the corresponding specialized -libraries [PRE], [Ve03]. But whether we like it or not, macros play -an important role on today's C++ metaprogramming, and some of -the useful MPL-level functionality cannot be implemented -without leaking its preprocessor-dependent implementation +

Macros

+

Being a template metaprogramming framework, the MPL concentrates on +getting one thing done well and leaves most of the clearly +preprocessor-related tasks to the corresponding specialized +libraries [PRE], [Ve03]. But whether we like it or not, macros play +an important role on today's C++ metaprogramming, and some of +the useful MPL-level functionality cannot be implemented +without leaking its preprocessor-dependent implementation nature into the library's public interface.

- +
- +
[PRE]Vesa Karvonen, Paul Mensonides, -The Boost Preprocessor Metaprogramming library
[PRE]Vesa Karvonen, Paul Mensonides, +The Boost Preprocessor Metaprogramming library
- +
- +
[Ve03]Vesa Karvonen, The Order Programming Language, 2003.
[Ve03]Vesa Karvonen, The Order Programming Language, 2003.
-
- + diff --git a/doc/refmanual/manual.png b/doc/refmanual/manual.png deleted file mode 100644 index 95a0e20eec01388fcb658a4c5b643b10cca77736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmeAS@N?(olHy`uVBq!ia0y~yV31~DU^v0S%)r2)w;<~o0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIM7zFr)xH2#>{Qv*I zyu94S#bx*I-S6JLyLl#Qw%kQ8fkuhZRK%XU?49 z5oO>|P&sn?*ueuQ4;^5g&J5xmJjGSQudXcZ!=TVGLC{{FnOU6M+`fljz~P601B2r1 zlRT^jj13GJ;l3Jntk__dX}B@VDKFmXiowX%ltL4&U8Mj}rGgOgZtlLY5?Ymle&-2BYk#KPR< zz@AnN6JxV;<16z6g~-BXm1S;v3A@@NIRqR|{HnO{iP?cc@%HgkM-Ci1c8=L!n1Qk7 zjh~;{0yQ_c9Uxb+G9I2hpL3!qBQ(NN`5hP@YF9HbaVQ=?-8!$Ifr%qeOQdcUmh06UWJViHA%A4nGdDDl|OUDZ_c-2(HBOMTytaoPkBa z=n<0}6SFyYjF>{h1m%v2(`Qd?>=&KK#>m9M$#}X@%`HHbi94@>!Rai&f~CtWb`FIr ze;6h`ZdzX1z~FR}U&g_bFRbDwmwq7Q@IQuy2=yLW99;dzX7GkhF7wOF)f{&*cpxivY8i3&Yz- zt}Uhx3=6k(&S=OK(ClMi;;@X_aq*I#1H(h_&kT$$EBPmeGca-7wJTF|vE&zUIMKm= z$)>rQNueR&mDz&-GbZRTb0~!T4qya%#$AH}B%UdErGlM9p$3$+f82^>U~J)MWD%&^ zmG;0ngPB9&%O5_S9S>KsDKr?I;$#!6_${o^U~pR8uEK_aMPQ!=6Nkc?Pd(!EK*?yY z%#+8iDzyy^PAiYza9G$hfr&#QV#bC7gMxyFCN@t2g@y@I9TL4#4Gc|7qul(|%*?i! z@C!J6IC7{fQXUim??GCMFl z>}GFZI3&)`z}Pa;Wnu*bV~gsIhmPz54m=)>XAdzhOmt#kY&o%IjZRO_8<_(e8l|}f z96V&z+4$TRsHwH^Gca*1ee@vZiAx`M1B27VsDmYWxli3zryg z(cwlna)*qxfkQ(jt7Qx*h$@&^1ngKK#zKN6UEYB~@q7P;$BYUM0lT$)G;Yc&Gz3Ix z9H>Zo`mDL#+<_snB;$s_H%1l#w~1$aHKsE#aUAvYSk80rHY10^m3Ly?UCE&Q8o?af zc+Z!aL!srr!C_W~h7YaW(3A~IBXB!GNu8ho8$bP0l+XkK DDp@<{ diff --git a/doc/refmanual/map.html b/doc/refmanual/map.html index 39660c4..579bb04 100644 --- a/doc/refmanual/map.html +++ b/doc/refmanual/map.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: map @@ -15,23 +12,23 @@ Front Page / Sequences / Classes / map
-

map

-
+

map

+

Description

-

map is a variadic, associative, extensible sequence of type pairs that +

map is a variadic, associative, extensible sequence of type pairs that supports constant-time insertion and removal of elements, and testing for membership. A map may contain at most one element for each key.

-
+

Header

- +
- - + + @@ -44,26 +41,26 @@ A
Sequence formHeader
Sequence formHeader
-
+ -
+

Expression semantics

In the following table and subsequent specifications, m is an instance of map, pos is an iterator into m, x and p1,p2,... pn are pairs, and k is an arbitrary type.

- +
- - + + @@ -73,7 +70,7 @@ A +Variadic Sequence. +see Variadic Sequence. +see Associative Sequence. +see Associative Sequence. - + - +Associative Sequence. +Associative Sequence. +m; see Associative Sequence. +see Associative Sequence. - + +m; see Associative Sequence. - + - + - - - +
ExpressionSemantics
ExpressionSemantics
map of elements p1,p2,... pn; see -Variadic Sequence.
 map<p1,p2,... pn>::type
@@ -81,39 +78,39 @@ A 
 
Identical to mapn<p1,p2,... pn>; -see Variadic Sequence.
begin<m>::type An iterator pointing to the beginning of m; -see Associative Sequence.
end<m>::type An iterator pointing to the end of m; -see Associative Sequence.
size<m>::typeThe size of m; see Associative Sequence.The size of m; see Associative Sequence.
empty<m>::typeA boolean Integral Constant c such that +A boolean Integral Constant c such that c::value == true if and only if m is empty; see -Associative Sequence.
front<m>::type The first element in m; see -Associative Sequence.
has_key<m,k>::type Queries the presence of elements with the key k in -m; see Associative Sequence.
count<m,k>::type The number of elements with the key k in m; -see Associative Sequence.
order<m,k>::typeA unique unsigned Integral Constant associated with -the key k in m; see Associative Sequence.A unique unsigned Integral Constant associated with +the key k in m; see Associative Sequence.
 at<m,k>::type
@@ -121,16 +118,16 @@ the key k in k in
-m; see Associative Sequence.
key_type<m,x>::typeIdentical to x::first; see Associative Sequence.Identical to x::first; see Associative Sequence.
value_type<m,x>::typeIdentical to x::second; see Associative Sequence.Identical to x::second; see Associative Sequence.
insert<m,x>::type

A new map equivalent to m except that

+

A new map, t, equivalent to m except that

 at< t, key_type<m,x>::type >::type
 
@@ -141,19 +138,19 @@ the key k in insert<m,x>::type; pos is ignored.
erase_key<m,k>::typeA new map equivalent to m except that +A new map, t, equivalent to m except that has_key<t, k>::value == false.
erase<m,pos>::type Equivalent to erase<m, deref<pos>::type >::type.
clear<m>::typeAn empty map; see clear.An empty map; see clear.
-
+

Example

 typedef map<
@@ -172,15 +169,16 @@ typedef map<
 BOOST_MPL_ASSERT(( is_same< at<m,long>::type, void_ > ));
 
- - + diff --git a/doc/refmanual/max-element.html b/doc/refmanual/max-element.html index efcadf5..3da96bc 100644 --- a/doc/refmanual/max-element.html +++ b/doc/refmanual/max-element.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: max_element @@ -15,13 +12,13 @@ Front Page / Algorithms / Querying Algorithms / max_element
-

max_element

-
+

max_element

+

Synopsis

 template<
       typename Sequence
-    , typename Pred = less<_1,_2>
+    , typename Pred = less<_1,_2>
     >
 struct max_element
 {
@@ -29,55 +26,56 @@ struct max_element
 };
 
-
+

Description

Returns an iterator to the largest element in Sequence.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be searched.
PredBinary Lambda ExpressionBinary Lambda Expression A comparison criteria.
-
+

Expression semantics

-

For any Forward Sequence s and binary Lambda Expression pred:

+

For any Forward Sequence s and binary Lambda Expression pred:

-typedef max_element<s,pred>::type i; 
+typedef max_element<s,pred>::type i;
 
- +
- + -
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Semantics:

i is the first iterator in [begin<s>::type, end<s>::type) such that for every iterator j +

Semantics:

i is the first iterator in [begin<s>::type, end<s>::type) such that for every iterator j in [begin<s>::type, end<s>::type),

 apply< pred, deref<i>::type, deref<j>::type >::type::value == false
@@ -87,31 +85,32 @@ in [
+

Complexity

-

Linear. Zero comparisons if s is empty, otherwise exactly size<s>::value - 1 +

Linear. Zero comparisons if s is empty, otherwise exactly size<s>::value - 1 comparisons.

-
+

Example

 typedef vector<bool,char[50],long,double> types;
 typedef max_element<
-      transform_view< types,sizeof_<_1> >
+      transform_view< types,sizeof_<_1> >
     >::type iter;
 
 BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, char[50]> ));
 
- - +
diff --git a/doc/refmanual/max.html b/doc/refmanual/max.html index 29a0018..f4844a2 100644 --- a/doc/refmanual/max.html +++ b/doc/refmanual/max.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: max @@ -15,8 +12,8 @@ Front Page / Metafunctions / Miscellaneous / max
-

max

-
+

max

+

Synopsis

 template<
@@ -29,32 +26,32 @@ struct max
 };
 
-
+

Description

Returns the larger of its two arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -65,19 +62,21 @@ struct max
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For arbitrary types x and y:

 typedef max<x,y>::type r;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:less<x,y>::value is a well-formed integral constant expression.
Precondition:

less<x,y>::value is a well-formed integral constant expression.

+
Semantics:

Equivalent to

@@ -88,31 +87,32 @@ typedef if_< 
 
-
+

Complexity

Constant time.

-
+

Example

 typedef fold<
       vector_c<int,1,7,0,-2,5,-1>
     , int_<10>
-    , max<_1,_2>
+    , max<_1,_2>
     >::type r;
 
 BOOST_MPL_ASSERT(( is_same< r, int_<10> > ));
 
- - + diff --git a/doc/refmanual/metafunction-class.html b/doc/refmanual/metafunction-class.html index d0fb080..453f407 100644 --- a/doc/refmanual/metafunction-class.html +++ b/doc/refmanual/metafunction-class.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Metafunction Class @@ -15,28 +12,28 @@ Front Page / Metafunctions / Concepts / Metafunction Class
-

Metafunction Class

+

Metafunction Class

-

Summary

-

A metafunction class is a certain form of metafunction representation +

Summary

+

A metafunction class is a certain form of metafunction representation that enables higher-order metaprogramming. More precisely, it's a class -with a publicly-accessible nested Metafunction called apply. +with a publicly-accessible nested Metafunction called apply. Correspondingly, a metafunction class invocation is defined as invocation of its nested apply metafunction.

-
+

Expression requirements

-

In the following table and subsequent specifications, f is a Metafunction Class.

- +

In the following table and subsequent specifications, f is a Metafunction Class.

+
- - - + + + @@ -55,16 +52,16 @@ of its nested
ExpressionTypeComplexity
ExpressionTypeComplexity
-
+

Expression semantics

 typedef f::apply::type x;
 
- +
- + @@ -74,11 +71,11 @@ typedef f::apply::type x;
 typedef f::apply<>::type x;
 
-
Precondition:f is a nullary Metafunction Class; f::apply::type is a type-name.
Precondition:f is a nullary Metafunction Class; f::apply::type is a type-name.
Semantics:x is the result of the metafunction class invocation.
+
- + @@ -88,11 +85,11 @@ typedef f::apply<>::type x;
 typedef f::apply<a1,...an>::type x;
 
-
Precondition:f is a nullary Metafunction Class; f::apply<>::type is a type-name.
Precondition:f is a nullary Metafunction Class; f::apply<>::type is a type-name.
Semantics:x is the result of the metafunction class invocation.
+
- + @@ -100,25 +97,26 @@ invocation with the actual arguments a1
Precondition:f is an n-ary metafunction class; apply is a Metafunction.
Precondition:f is an n-ary metafunction class; apply is a Metafunction.
Semantics:x is the result of the metafunction class invocation with the actual arguments a1,... an.
-
+ - - + diff --git a/doc/refmanual/metafunction.html b/doc/refmanual/metafunction.html index e00f935..fe7fe9f 100644 --- a/doc/refmanual/metafunction.html +++ b/doc/refmanual/metafunction.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Metafunction @@ -15,33 +12,33 @@ Front Page / Metafunctions / Concepts / Metafunction
-

Metafunction

-
+

Metafunction

+

Description

-

A metafunction is a class or a class template that represents a -function invocable at compile-time. An non-nullary metafunction is -invoked by instantiating the class template with particular -template parameters (metafunction arguments); the result of the -metafunction application is accessible through the instantiation's -nested type typedef. All metafunction's arguments must be types -(i.e. only type template parameters are allowed). A metafunction -can have a variable number of parameters. A nullary metafunction is -represented as a (template) class with a nested type typename +

A metafunction is a class or a class template that represents a +function invocable at compile-time. An non-nullary metafunction is +invoked by instantiating the class template with particular +template parameters (metafunction arguments); the result of the +metafunction application is accessible through the instantiation's +nested type typedef. All metafunction's arguments must be types +(i.e. only type template parameters are allowed). A metafunction +can have a variable number of parameters. A nullary metafunction is +represented as a (template) class with a nested type typename member.

-
+

Expression requirements

-

In the following table and subsequent specifications, f is a Metafunction.

- +

In the following table and subsequent specifications, f is a Metafunction.

+
- - - + + + @@ -60,16 +57,16 @@ member.

ExpressionTypeComplexity
ExpressionTypeComplexity
-
+

Expression semantics

 typedef f::type x;
 
- +
- + @@ -79,11 +76,11 @@ typedef f::type x;
 typedef f<>::type x;
 
-
Precondition:f is a nullary Metafunction; f::type is a type-name.
Precondition:f is a nullary Metafunction; f::type is a type-name.
Semantics:x is the result of the metafunction invocation.
+
- + @@ -93,38 +90,39 @@ typedef f<>::type x;
 typedef f<a1,... an>::type x;
 
-
Precondition:f is a nullary Metafunction; f<>::type is a type-name.
Precondition:f is a nullary Metafunction; f<>::type is a type-name.
Semantics:x is the result of the metafunction invocation.
+
- -
Precondition:f is an n-ary Metafunction; a1,... an are types; +
Precondition:f is an n-ary Metafunction; a1,... an are types; f<a1,...an>::type is a type-name.
Semantics:x is the result of the metafunction invocation +
Semantics:x is the result of the metafunction invocation with the actual arguments a1,... an.
-
+ - - + diff --git a/doc/refmanual/metafunctions-concepts.html b/doc/refmanual/metafunctions-concepts.html index cf70a75..fb98021 100644 --- a/doc/refmanual/metafunctions-concepts.html +++ b/doc/refmanual/metafunctions-concepts.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: Concepts @@ -14,21 +11,23 @@
Front Page / Metafunctions / Concepts
-
-

Concepts

- + - + diff --git a/doc/refmanual/metafunctions.html b/doc/refmanual/metafunctions.html index f7829bc..8924fc6 100644 --- a/doc/refmanual/metafunctions.html +++ b/doc/refmanual/metafunctions.html @@ -1,85 +1,84 @@ - - - - + The MPL Reference Manual: Metafunctions - +
Front Page / Metafunctions
-

Metafunctions

-

The MPL includes a number of predefined metafunctions that can be roughly +

Metafunctions

+

The MPL includes a number of predefined metafunctions that can be roughly classified in two categories: general purpose metafunctions, dealing with -conditional type selection and higher-order metafunction invocation, -composition, and argument binding, and numeric metafunctions, -incapsulating built-in and user-defined arithmetic, comparison, -logical, and bitwise operations.

-

Given that it is possible to perform integer numeric computations at -compile time using the conventional operators notation, the need for the -second category might be not obvious, but it in fact plays a cental role in -making programming with MPL seemingly effortless. In -particular, there are at least two contexts where built-in language -facilities fall short [3]:

+conditional type selection and higher-order metafunction invocation, +composition, and argument binding, and numeric metafunctions, +incapsulating built-in and user-defined arithmetic, comparison, +logical, and bitwise operations.

+

Given that it is possible to perform integer numeric computations at +compile time using the conventional operators notation, the need for the +second category might be not obvious, but it in fact plays a cental role in +making programming with MPL seemingly effortless. In +particular, there are at least two contexts where built-in language +facilities fall short [3]:

  1. Passing a computation to an algorithm.
  2. Performing a computation on non-integer data.

The second use case deserves special attention. In contrast to the built-in, -strictly integer compile-time arithmetics, the MPL numeric metafunctions are -polymorphic, with support for mixed-type arithmetics. This means that they -can operate on a variety of numeric types — for instance, rational, -fixed-point or complex numbers, — and that, in general, you are allowed to -freely intermix these types within a single expression. See Numeric Metafunction concept for more details on the MPL numeric infrastructure.

-

To reduce a negative syntactical impact of the metafunctions notation over the infix operator notation, all numeric metafunctions allow to pass up to N arguments, where N is defined by the value of -BOOST_MPL_LIMIT_METAFUNCTION_ARITY configuration macro.

- +BOOST_MPL_LIMIT_METAFUNCTION_ARITY configuration macro.

+
-
[3]All other considerations aside, as of the time of this writing -(early 2004), using built-in operators on integral constants still often -present a portability problem — many compilers cannot handle particular +
[3]All other considerations aside, as of the time of this writing +(early 2004), using built-in operators on integral constants still often +present a portability problem — many compilers cannot handle particular forms of expressions, forcing us to use conditional compilation. Because MPL -numeric metafunctions work on types and encapsulate these kind of workarounds -internally, they elude these problems, so if you aim for portability, it is -generally adviced to use them in the place of the conventional operators, even +numeric metafunctions work on types and encapsulate these kind of workarounds +internally, they elude these problems, so if you aim for portability, it is +generally adviced to use them in the place of the conventional operators, even at the price of slightly decreased readability.
-
- - + + diff --git a/doc/refmanual/min-element.html b/doc/refmanual/min-element.html index 980f362..ee1e7a3 100644 --- a/doc/refmanual/min-element.html +++ b/doc/refmanual/min-element.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: min_element @@ -15,13 +12,13 @@ Front Page / Algorithms / Querying Algorithms / min_element
-

min_element

-
+

min_element

+

Synopsis

 template<
       typename Sequence
-    , typename Pred = less<_1,_2>
+    , typename Pred = less<_1,_2>
     >
 struct min_element
 {
@@ -29,55 +26,56 @@ struct min_element
 };
 
-
+

Description

Returns an iterator to the smallest element in Sequence.

-
+ -
+

Parameters

- +
- - - + + + - + - +
ParameterRequirementDescription
ParameterRequirementDescription
SequenceForward SequenceForward Sequence A sequence to be searched.
PredBinary Lambda ExpressionBinary Lambda Expression A comparison criteria.
-
+

Expression semantics

-

For any Forward Sequence s and binary Lambda Expression pred:

+

For any Forward Sequence s and binary Lambda Expression pred:

-typedef min_element<s,pred>::type i; 
+typedef min_element<s,pred>::type i;
 
- +
- + -
Return type:Forward Iterator.
Return type:

Forward Iterator.

+
Semantics:

i is the first iterator in [begin<s>::type, end<s>::type) such that for every iterator j +

Semantics:

i is the first iterator in [begin<s>::type, end<s>::type) such that for every iterator j in [begin<s>::type, end<s>::type),

 apply< pred, deref<j>::type, deref<i>::type >::type::value == false
@@ -87,31 +85,32 @@ in [
+

Complexity

Linear. Zero comparisons if s is empty, otherwise exactly size<s>::value - 1 comparisons.

-
+

Example

 typedef vector<bool,char[50],long,double> types;
 typedef min_element<
-      transform_view< types,sizeof_<_1> >
+      transform_view< types,sizeof_<_1> >
     >::type iter;
 
 BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, bool> ));
 
- - +
diff --git a/doc/refmanual/min.html b/doc/refmanual/min.html index 2e0d954..4f04a95 100644 --- a/doc/refmanual/min.html +++ b/doc/refmanual/min.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: min @@ -15,8 +12,8 @@ Front Page / Metafunctions / Miscellaneous / min
-

min

-
+

min

+

Synopsis

 template<
@@ -29,32 +26,32 @@ struct min
 };
 
-
+

Description

Returns the smaller of its two arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + @@ -65,19 +62,21 @@ struct min
ParameterRequirementDescription
ParameterRequirementDescription
-
+

Expression semantics

For arbitrary types x and y:

 typedef min<x,y>::type r;
 
- +
- + - +
Return type:A type.
Return type:

A type.

+
Precondition:less<x,y>::value is a well-formed integral constant expression.
Precondition:

less<x,y>::value is a well-formed integral constant expression.

+
Semantics:

Equivalent to

@@ -88,31 +87,32 @@ typedef if_< 
 
-
+

Complexity

Constant time.

-
+

Example

 typedef fold<
       vector_c<int,1,7,0,-2,5,-1>
     , int_<-10>
-    , min<_1,_2>
+    , min<_1,_2>
     >::type r;
 
 BOOST_MPL_ASSERT(( is_same< r, int_<-10> > ));
 
- - + diff --git a/doc/refmanual/minus.html b/doc/refmanual/minus.html index 32a13e5..2acab45 100644 --- a/doc/refmanual/minus.html +++ b/doc/refmanual/minus.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: minus @@ -15,8 +12,8 @@ Front Page / Metafunctions / Arithmetic Operations / minus
-

minus

-
+

minus

+

Synopsis

 template<
@@ -32,58 +29,59 @@ struct minus
 };
 
-
+

Description

Returns the difference of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2,... TnIntegral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1,c2,... cn:

+

For any Integral Constants c1,c2,... cn:

-typedef minus<c1,...cn>::type r; 
+typedef minus<c1,...cn>::type r;
 
- +
- + @@ -102,11 +100,12 @@ typedef minus<c,c3,...
 typedef minus<c1,...cn> r;
 
-
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -91,8 +89,8 @@ typedef integral_c<
       typeof(c1::value - c2::value)
     , ( c1::value - c2::value )
     > c;
-    
-typedef minus<c,c3,...cn>::type r; 
+
+typedef minus<c,c3,...cn>::type r;
 
+
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -117,11 +116,11 @@ struct r : minus<c1,...
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef minus< int_<-10>, int_<3>, long_<1> >::type r;
@@ -129,15 +128,16 @@ typedef minus< BOOST_MPL_ASSERT(( is_same< r::value_type, long > ));
 
- - + diff --git a/doc/refmanual/miscellaneous.html b/doc/refmanual/miscellaneous.html index ba868a9..550fe0f 100644 --- a/doc/refmanual/miscellaneous.html +++ b/doc/refmanual/miscellaneous.html @@ -1,35 +1,34 @@ - - - - + The MPL Reference Manual: Miscellaneous - +
Front Page / Metafunctions / Miscellaneous
- - + + diff --git a/doc/refmanual/modulus.html b/doc/refmanual/modulus.html index 118d0a5..09a1e68 100644 --- a/doc/refmanual/modulus.html +++ b/doc/refmanual/modulus.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: modulus @@ -15,8 +12,8 @@ Front Page / Metafunctions / Arithmetic Operations / modulus
-

modulus

-
+

modulus

+

Synopsis

 template<
@@ -29,60 +26,62 @@ struct modulus
 };
 
-
+

Description

Returns the modulus of its arguments.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
T1, T2Integral ConstantIntegral Constant Operation's arguments.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constants c1 and c2:

+

For any Integral Constants c1 and c2:

 typedef modulus<c1,c2>::type r;
 
- +
- + - +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Precondition:c2::value != 0
Precondition:

c2::value != 0

+
Semantics:

Equivalent to

@@ -99,13 +98,15 @@ typedef integral_c<
 
 typedef modulus<c1,c2> r;
 
- +
- + - +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Precondition:c2::value != 0
Precondition:

c2::value != 0

+
Semantics:

Equivalent to

@@ -116,11 +117,11 @@ struct r : modulus<c1,c2>:
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef modulus< int_<10>, long_<3> >::type r;
@@ -128,15 +129,16 @@ typedef modulus< BOOST_MPL_ASSERT(( is_same< r::value_type, long > ));
 
- - +
diff --git a/doc/refmanual/negate.html b/doc/refmanual/negate.html index 208632d..2ea2f81 100644 --- a/doc/refmanual/negate.html +++ b/doc/refmanual/negate.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: negate @@ -15,8 +12,8 @@ Front Page / Metafunctions / Arithmetic Operations / negate
-

negate

-
+

negate

+

Synopsis

 template<
@@ -28,58 +25,59 @@ struct negate
 };
 
-
+

Description

Returns the negative (additive inverse) of its argument.

-
+ -
+ -
+

Parameters

- +
- - - + + + - +
ParameterRequirementDescription
ParameterRequirementDescription
TIntegral ConstantIntegral Constant Operation's argument.

[Note: The requirements listed in this specification -are the ones imposed by the default implementation. See Numeric Metafunction concept -for the details on how to provide an implementation for a user-defined numeric type -that does not satisfy the Integral Constant requirements. — end note]

+are the ones imposed by the default implementation. See Numeric Metafunction concept +for the details on how to provide an implementation for a user-defined numeric type +that does not satisfy the Integral Constant requirements. — end note]

-
+

Expression semantics

-

For any Integral Constant c:

+

For any Integral Constant c:

-typedef negate<c>::type r; 
+typedef negate<c>::type r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -91,13 +89,14 @@ typedef integral_c< c::
 
 
-typedef negate<c> r; 
+typedef negate<c> r;
 
- +
- +
Return type:Integral Constant.
Return type:

Integral Constant.

+
Semantics:

Equivalent to

@@ -108,11 +107,11 @@ struct r : negate<c>::type
 
-
+

Complexity

Amortized constant time.

-
+

Example

 typedef negate< int_<-10> >::type r;
@@ -120,14 +119,15 @@ typedef negate< BOOST_MPL_ASSERT(( is_same< r::value_type, int > ));
 
- - +
diff --git a/doc/refmanual/next.html b/doc/refmanual/next.html index afad741..cdad406 100644 --- a/doc/refmanual/next.html +++ b/doc/refmanual/next.html @@ -1,12 +1,9 @@ - - - - + The MPL Reference Manual: next @@ -15,8 +12,8 @@ Front Page / Iterators / Iterator Metafunctions / next