From 43d395d0509c984ef49ba5d82bb553b1f0e71a19 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 17 Aug 2009 11:30:52 +0000 Subject: [PATCH] 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 foldend 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 foldend 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 _nend 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