From 1572e0e9c340c9abed663ece8ffa4f5dd9188358 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sat, 3 Jul 2010 20:10:58 +0000 Subject: [PATCH] merged fusion from the trunk [SVN r63560] --- doc/adapted.qbk | 40 +- doc/algorithm.qbk | 194 ++--- doc/changelog.qbk | 2 + doc/container.qbk | 4 +- doc/fusion.qbk | 6 + doc/html/fusion/acknowledgements.html | 2 +- doc/html/fusion/adapted.html | 4 +- doc/html/fusion/adapted/adapt_assoc.html | 12 +- .../adapted/adapt_assoc_struct_named.html | 17 +- .../adapted/adapt_assoc_tpl_struct.html | 12 +- doc/html/fusion/adapted/adapt_struct.html | 12 +- .../fusion/adapted/adapt_struct_named.html | 17 +- doc/html/fusion/adapted/adapt_tpl_struct.html | 12 +- doc/html/fusion/adapted/array.html | 14 +- doc/html/fusion/adapted/boost__array.html | 16 +- doc/html/fusion/adapted/boost__tuple.html | 14 +- .../fusion/adapted/define_assoc_struct.html | 23 +- .../adapted/define_assoc_tpl_struct.html | 31 +- doc/html/fusion/adapted/define_struct.html | 22 +- .../fusion/adapted/define_tpl_struct.html | 31 +- doc/html/fusion/adapted/mpl_sequence.html | 34 +- doc/html/fusion/adapted/std__pair.html | 16 +- doc/html/fusion/algorithm.html | 15 +- doc/html/fusion/algorithm/iteration.html | 4 +- .../fusion/algorithm/iteration/functions.html | 5 +- .../iteration/functions/accumulate.html | 268 ++++--- .../algorithm/iteration/functions/fold.html | 265 ++++--- .../iteration/functions/for_each.html | 18 +- .../algorithm/iteration/metafunctions.html | 5 +- .../iteration/metafunctions/accumulate.html | 223 +++--- .../iteration/metafunctions/fold.html | 223 +++--- .../iteration/metafunctions/for_each.html | 14 +- doc/html/fusion/algorithm/query.html | 4 +- .../fusion/algorithm/query/functions.html | 2 +- .../fusion/algorithm/query/functions/all.html | 16 +- .../fusion/algorithm/query/functions/any.html | 16 +- .../algorithm/query/functions/count.html | 16 +- .../algorithm/query/functions/count_if.html | 16 +- .../algorithm/query/functions/find.html | 16 +- .../algorithm/query/functions/find_if.html | 22 +- .../algorithm/query/functions/none.html | 16 +- .../fusion/algorithm/query/metafunctions.html | 2 +- .../algorithm/query/metafunctions/all.html | 14 +- .../algorithm/query/metafunctions/any.html | 14 +- .../algorithm/query/metafunctions/count.html | 14 +- .../query/metafunctions/count_if.html | 14 +- .../algorithm/query/metafunctions/find.html | 14 +- .../query/metafunctions/find_if.html | 14 +- .../algorithm/query/metafunctions/none.html | 14 +- doc/html/fusion/algorithm/transformation.html | 6 +- .../algorithm/transformation/functions.html | 2 +- .../transformation/functions/clear.html | 16 +- .../transformation/functions/erase.html | 48 +- .../transformation/functions/erase_key.html | 16 +- .../transformation/functions/filter.html | 32 +- .../transformation/functions/filter_if.html | 32 +- .../transformation/functions/insert.html | 32 +- .../functions/insert_range.html | 32 +- .../transformation/functions/join.html | 34 +- .../transformation/functions/pop_back.html | 32 +- .../transformation/functions/pop_front.html | 32 +- .../transformation/functions/push_back.html | 32 +- .../transformation/functions/push_front.html | 32 +- .../transformation/functions/remove.html | 32 +- .../transformation/functions/remove_if.html | 32 +- .../transformation/functions/replace.html | 16 +- .../transformation/functions/replace_if.html | 16 +- .../transformation/functions/reverse.html | 42 +- .../transformation/functions/transform.html | 20 +- .../transformation/functions/zip.html | 16 +- .../transformation/metafunctions.html | 2 +- .../transformation/metafunctions/clear.html | 14 +- .../transformation/metafunctions/erase.html | 30 +- .../metafunctions/erase_key.html | 14 +- .../transformation/metafunctions/filter.html | 30 +- .../metafunctions/filter_if.html | 30 +- .../transformation/metafunctions/insert.html | 30 +- .../metafunctions/insert_range.html | 30 +- .../transformation/metafunctions/join.html | 30 +- .../metafunctions/pop_back.html | 30 +- .../metafunctions/pop_front.html | 30 +- .../metafunctions/push_back.html | 30 +- .../metafunctions/push_front.html | 30 +- .../transformation/metafunctions/remove.html | 30 +- .../metafunctions/remove_if.html | 30 +- .../transformation/metafunctions/replace.html | 14 +- .../metafunctions/replace_if.html | 14 +- .../transformation/metafunctions/reverse.html | 40 +- .../metafunctions/transform.html | 36 +- .../transformation/metafunctions/zip.html | 12 +- doc/html/fusion/change_log.html | 92 +-- doc/html/fusion/container.html | 4 +- doc/html/fusion/container/cons.html | 22 +- doc/html/fusion/container/conversion.html | 4 +- .../container/conversion/functions.html | 2 +- .../conversion/functions/as_list.html | 14 +- .../conversion/functions/as_map.html | 14 +- .../conversion/functions/as_set.html | 14 +- .../conversion/functions/as_vector.html | 14 +- .../container/conversion/metafunctions.html | 2 +- .../conversion/metafunctions/as_list.html | 14 +- .../conversion/metafunctions/as_map.html | 14 +- .../conversion/metafunctions/as_set.html | 14 +- .../conversion/metafunctions/as_vector.html | 14 +- doc/html/fusion/container/generation.html | 4 +- .../container/generation/functions.html | 2 +- .../generation/functions/list_tie.html | 14 +- .../generation/functions/make_cons.html | 16 +- .../generation/functions/make_list.html | 16 +- .../generation/functions/make_map.html | 16 +- .../generation/functions/make_set.html | 16 +- .../generation/functions/make_vector.html | 16 +- .../generation/functions/map_tie.html | 14 +- .../container/generation/functions/tiers.html | 28 +- .../generation/functions/vector_tie.html | 14 +- .../container/generation/metafunctions.html | 2 +- .../generation/metafunctions/list_tie.html | 14 +- .../generation/metafunctions/make_cons.html | 14 +- .../generation/metafunctions/make_list.html | 14 +- .../generation/metafunctions/make_map.html | 16 +- .../generation/metafunctions/make_set.html | 14 +- .../generation/metafunctions/make_vector.html | 14 +- .../generation/metafunctions/map_tie.html | 14 +- .../generation/metafunctions/vector_tie.html | 14 +- doc/html/fusion/container/list.html | 22 +- doc/html/fusion/container/map.html | 30 +- doc/html/fusion/container/set.html | 30 +- doc/html/fusion/container/vector.html | 24 +- doc/html/fusion/extension.html | 2 +- doc/html/fusion/extension/ext_full.html | 65 +- .../fusion/extension/iterator_facade.html | 16 +- .../fusion/extension/sequence_facade.html | 16 +- doc/html/fusion/functional.html | 10 +- doc/html/fusion/functional/adapters.html | 2 +- .../fusion/functional/adapters/fused.html | 52 +- .../adapters/fused_function_object.html | 52 +- .../functional/adapters/fused_procedure.html | 48 +- .../fusion/functional/adapters/limits.html | 14 +- .../fusion/functional/adapters/unfused.html | 40 +- .../functional/adapters/unfused_typed.html | 44 +- doc/html/fusion/functional/concepts.html | 2 +- .../fusion/functional/concepts/callable.html | 20 +- .../functional/concepts/def_callable.html | 28 +- doc/html/fusion/functional/concepts/poly.html | 38 +- .../functional/concepts/reg_callable.html | 26 +- doc/html/fusion/functional/generation.html | 2 +- .../functional/generation/functions.html | 2 +- .../generation/functions/mk_fused.html | 28 +- .../generation/functions/mk_fused_fobj.html | 28 +- .../generation/functions/mk_fused_proc.html | 28 +- .../generation/functions/mk_unfused.html | 28 +- .../functional/generation/metafunctions.html | 2 +- .../generation/metafunctions/mk_fused.html | 14 +- .../metafunctions/mk_fused_fobj.html | 14 +- .../metafunctions/mk_fused_proc.html | 14 +- .../generation/metafunctions/mk_unfused.html | 14 +- doc/html/fusion/functional/invocation.html | 2 +- .../functional/invocation/functions.html | 2 +- .../invocation/functions/invoke.html | 36 +- .../invocation/functions/invoke_fobj.html | 36 +- .../invocation/functions/invoke_proc.html | 36 +- .../fusion/functional/invocation/limits.html | 18 +- .../functional/invocation/metafunctions.html | 2 +- .../invocation/metafunctions/invoke.html | 16 +- .../invocation/metafunctions/invoke_fobj.html | 16 +- .../invocation/metafunctions/invoke_proc.html | 16 +- doc/html/fusion/introduction.html | 20 +- doc/html/fusion/iterator.html | 4 +- doc/html/fusion/iterator/concepts.html | 2 +- .../concepts/associative_iterator.html | 64 +- .../concepts/bidirectional_iterator.html | 71 +- .../iterator/concepts/forward_iterator.html | 125 ++-- .../concepts/random_access_iterator.html | 56 +- doc/html/fusion/iterator/functions.html | 2 +- .../fusion/iterator/functions/advance.html | 14 +- .../fusion/iterator/functions/advance_c.html | 14 +- doc/html/fusion/iterator/functions/deref.html | 14 +- .../fusion/iterator/functions/deref_data.html | 14 +- .../fusion/iterator/functions/distance.html | 14 +- doc/html/fusion/iterator/functions/next.html | 14 +- doc/html/fusion/iterator/functions/prior.html | 14 +- doc/html/fusion/iterator/metafunctions.html | 2 +- .../iterator/metafunctions/advance.html | 14 +- .../iterator/metafunctions/advance_c.html | 14 +- .../fusion/iterator/metafunctions/deref.html | 14 +- .../iterator/metafunctions/deref_data.html | 14 +- .../iterator/metafunctions/distance.html | 14 +- .../iterator/metafunctions/equal_to.html | 14 +- .../fusion/iterator/metafunctions/key_of.html | 14 +- .../fusion/iterator/metafunctions/next.html | 14 +- .../fusion/iterator/metafunctions/prior.html | 14 +- .../iterator/metafunctions/value_of.html | 14 +- .../iterator/metafunctions/value_of_data.html | 14 +- doc/html/fusion/iterator/operator.html | 2 +- .../iterator/operator/operator_equality.html | 12 +- .../operator/operator_inequality.html | 12 +- .../operator/operator_unary_star.html | 14 +- doc/html/fusion/notes.html | 64 +- doc/html/fusion/organization.html | 181 +++-- doc/html/fusion/preface.html | 36 +- doc/html/fusion/quick_start.html | 39 +- doc/html/fusion/references.html | 44 +- doc/html/fusion/sequence.html | 4 +- doc/html/fusion/sequence/concepts.html | 6 +- .../concepts/associative_sequence.html | 60 +- .../concepts/bidirectional_sequence.html | 50 +- .../sequence/concepts/forward_sequence.html | 99 ++- .../concepts/random_access_sequence.html | 50 +- doc/html/fusion/sequence/intrinsic.html | 16 +- .../fusion/sequence/intrinsic/functions.html | 2 +- .../sequence/intrinsic/functions/at.html | 14 +- .../sequence/intrinsic/functions/at_c.html | 14 +- .../sequence/intrinsic/functions/at_key.html | 14 +- .../sequence/intrinsic/functions/back.html | 14 +- .../sequence/intrinsic/functions/begin.html | 46 +- .../sequence/intrinsic/functions/empty.html | 14 +- .../sequence/intrinsic/functions/end.html | 46 +- .../sequence/intrinsic/functions/front.html | 14 +- .../sequence/intrinsic/functions/has_key.html | 14 +- .../sequence/intrinsic/functions/size.html | 14 +- .../sequence/intrinsic/functions/swap.html | 12 +- .../sequence/intrinsic/metafunctions.html | 2 +- .../sequence/intrinsic/metafunctions/at.html | 30 +- .../intrinsic/metafunctions/at_c.html | 30 +- .../intrinsic/metafunctions/at_key.html | 30 +- .../intrinsic/metafunctions/back.html | 14 +- .../intrinsic/metafunctions/begin.html | 46 +- .../intrinsic/metafunctions/empty.html | 14 +- .../sequence/intrinsic/metafunctions/end.html | 46 +- .../intrinsic/metafunctions/front.html | 14 +- .../intrinsic/metafunctions/has_key.html | 14 +- .../intrinsic/metafunctions/size.html | 14 +- .../intrinsic/metafunctions/swap.html | 12 +- .../intrinsic/metafunctions/value_at.html | 14 +- .../intrinsic/metafunctions/value_at_c.html | 14 +- .../intrinsic/metafunctions/value_at_key.html | 14 +- doc/html/fusion/sequence/operator.html | 2 +- .../fusion/sequence/operator/comparison.html | 4 +- .../sequence/operator/comparison/equal.html | 14 +- .../operator/comparison/greater_than.html | 12 +- .../comparison/greater_than_equal.html | 12 +- .../operator/comparison/less_than.html | 12 +- .../operator/comparison/less_than_equal.html | 12 +- .../operator/comparison/not_equal.html | 12 +- doc/html/fusion/sequence/operator/i_o.html | 6 +- doc/html/fusion/sequence/operator/i_o/in.html | 14 +- .../fusion/sequence/operator/i_o/out.html | 14 +- doc/html/fusion/support.html | 2 +- doc/html/fusion/support/category_of.html | 14 +- doc/html/fusion/support/deduce.html | 16 +- doc/html/fusion/support/deduce_sequence.html | 16 +- doc/html/fusion/support/is_sequence.html | 14 +- doc/html/fusion/support/is_view.html | 14 +- doc/html/fusion/support/pair.html | 16 +- doc/html/fusion/support/tag_of.html | 14 +- doc/html/fusion/tuple.html | 2 +- .../fusion/tuple/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 8 +- .../class_template_tuple/element_access.html | 6 +- .../relational_operators.html | 8 +- .../tuple_creation_functions.html | 6 +- .../tuple_helper_classes.html | 6 +- doc/html/fusion/tuple/pairs.html | 6 +- doc/html/fusion/view.html | 4 +- doc/html/fusion/view/filter_view.html | 32 +- doc/html/fusion/view/iterator_range.html | 44 +- doc/html/fusion/view/joint_view.html | 34 +- doc/html/fusion/view/nview.html | 26 +- doc/html/fusion/view/reverse_view.html | 42 +- doc/html/fusion/view/single_view.html | 20 +- doc/html/fusion/view/transform_view.html | 30 +- doc/html/fusion/view/zip_view.html | 32 +- doc/html/index.html | 8 +- doc/view.qbk | 66 ++ include/boost/fusion/adapted.hpp | 9 +- .../adapted/boost_array/array_iterator.hpp | 2 +- .../boost_tuple/boost_tuple_iterator.hpp | 8 +- .../adapted/class/adapt_assoc_class.hpp | 11 + .../adapted/class/adapt_assoc_class_named.hpp | 2 +- .../fusion/adapted/class/adapt_class.hpp | 11 + .../adapted/class/adapt_class_named.hpp | 2 +- .../fusion/adapted/class/class_iterator.hpp | 105 --- .../adapted/class/detail/adapt_base.hpp | 7 +- .../fusion/adapted/class/detail/at_impl.hpp | 70 -- .../adapted/class/detail/at_key_impl.hpp | 54 -- .../adapted/class/detail/begin_impl.hpp | 40 -- .../adapted/class/detail/category_of_impl.hpp | 35 - .../fusion/adapted/class/detail/end_impl.hpp | 48 -- .../adapted/class/detail/has_key_impl.hpp | 40 -- .../adapted/class/detail/is_sequence_impl.hpp | 31 - .../adapted/class/detail/is_view_impl.hpp | 32 - .../fusion/adapted/class/detail/size_impl.hpp | 37 - .../adapted/class/detail/value_at_impl.hpp | 47 -- .../class/detail/value_at_key_impl.hpp | 39 - .../boost/fusion/adapted/class/extension.hpp | 68 -- .../boost/fusion/adapted/mpl/mpl_iterator.hpp | 2 +- .../adapted/struct/adapt_assoc_struct.hpp | 17 +- .../struct/adapt_assoc_struct_named.hpp | 22 +- .../fusion/adapted/struct/adapt_struct.hpp | 13 +- .../adapted/struct/adapt_struct_named.hpp | 21 +- .../adapted/struct/detail/adapt_base.hpp | 20 +- .../adapted/struct/detail/define_struct.hpp | 8 +- .../adapted/struct/detail/extension.hpp | 8 +- .../adapted/struct/detail/is_view_impl.hpp | 4 +- .../adapted/struct/detail/proxy_type.hpp | 7 +- include/boost/fusion/algorithm/iteration.hpp | 3 + .../fusion/algorithm/iteration/accumulate.hpp | 4 +- .../algorithm/iteration/detail/fold.hpp | 676 +++++++++++------- .../boost/fusion/algorithm/iteration/fold.hpp | 43 +- .../fusion/algorithm/iteration/iter_fold.hpp | 17 + .../algorithm/iteration/reverse_fold.hpp | 17 + .../algorithm/iteration/reverse_iter_fold.hpp | 19 + .../fusion/algorithm/query/detail/all.hpp | 2 +- .../fusion/algorithm/query/detail/count.hpp | 14 +- .../fusion/algorithm/transformation/clear.hpp | 2 +- .../transformation/detail/replace.hpp | 4 +- .../transformation/detail/replace_if.hpp | 4 +- .../boost/fusion/container/deque/deque.hpp | 2 +- .../fusion/container/deque/deque_iterator.hpp | 4 + include/boost/fusion/container/list/cons.hpp | 16 +- .../fusion/container/list/cons_iterator.hpp | 4 +- .../boost/fusion/container/vector/vector.hpp | 4 +- .../fusion/container/vector/vector10.hpp | 2 +- .../container/vector/vector_iterator.hpp | 17 +- .../boost/fusion/functional/adapter/fused.hpp | 10 + .../adapter/fused_function_object.hpp | 10 + .../functional/adapter/fused_procedure.hpp | 10 + .../fusion/functional/adapter/unfused.hpp | 11 + .../functional/adapter/unfused_typed.hpp | 9 + .../fusion/functional/invocation/invoke.hpp | 29 +- .../invocation/invoke_function_object.hpp | 30 +- .../invocation/invoke_procedure.hpp | 27 +- include/boost/fusion/include/has_key.hpp | 2 +- include/boost/fusion/include/iter_fold.hpp | 13 + include/boost/fusion/include/reverse_fold.hpp | 13 + .../fusion/include/reverse_iter_fold.hpp | 13 + .../boost/fusion/iterator/basic_iterator.hpp | 4 +- .../fusion/iterator/mpl/convert_iterator.hpp | 2 +- .../fusion/iterator/mpl/fusion_iterator.hpp | 24 +- .../sequence/comparison/detail/equal_to.hpp | 2 +- .../fusion/sequence/comparison/equal_to.hpp | 10 + include/boost/fusion/support/pair.hpp | 10 + include/boost/fusion/support/tag_of.hpp | 37 +- include/boost/fusion/view.hpp | 4 +- .../fusion/view/filter_view/filter_view.hpp | 5 +- .../view/filter_view/filter_view_iterator.hpp | 8 +- .../view/iterator_range/iterator_range.hpp | 16 +- .../fusion/view/joint_view/joint_view.hpp | 8 +- .../view/joint_view/joint_view_iterator.hpp | 10 +- .../view/nview/detail/distance_impl.hpp | 2 +- .../fusion/view/nview/nview_iterator.hpp | 4 +- .../view/repetitive_view/repetitive_view.hpp | 8 +- .../repetitive_view_iterator.hpp | 12 +- .../fusion/view/reverse_view/reverse_view.hpp | 8 +- .../reverse_view/reverse_view_iterator.hpp | 8 +- .../fusion/view/single_view/single_view.hpp | 14 +- .../view/single_view/single_view_iterator.hpp | 10 + .../view/transform_view/transform_view.hpp | 16 +- .../transform_view_iterator.hpp | 8 +- .../view/zip_view/detail/distance_impl.hpp | 2 +- test/Jamfile | 4 + test/algorithm/all.cpp | 4 +- test/algorithm/any.cpp | 4 +- test/algorithm/fold.cpp | 6 +- test/algorithm/fold.hpp | 212 ++++++ test/algorithm/fold2.cpp | 8 + test/algorithm/iter_fold.cpp | 10 + test/algorithm/none.cpp | 4 +- test/algorithm/reverse_fold.cpp | 10 + test/algorithm/reverse_iter_fold.cpp | 12 + test/functional/make_unfused_generic.cpp | 124 ---- test/functional/make_unfused_lvalue_args.cpp | 126 ---- test/functional/make_unfused_rvalue_args.cpp | 110 --- test/functional/unfused_generic.cpp | 126 ---- test/functional/unfused_lvalue_args.cpp | 119 --- test/functional/unfused_rvalue_args.cpp | 102 --- test/functional/unfused_typed.cpp | 1 + test/sequence/adapt_assoc_class.cpp | 6 +- test/sequence/adapt_assoc_class_named.cpp | 8 +- test/sequence/adapt_assoc_struct.cpp | 4 +- test/sequence/adapt_assoc_struct_named.cpp | 6 +- test/sequence/adapt_assoc_tpl_class.cpp | 6 +- test/sequence/adapt_assoc_tpl_struct.cpp | 4 +- test/sequence/adapt_class.cpp | 6 +- test/sequence/adapt_class_named.cpp | 8 +- test/sequence/adapt_struct.cpp | 4 +- test/sequence/adapt_struct_named.cpp | 6 +- test/sequence/adapt_tpl_class.cpp | 6 +- test/sequence/adapt_tpl_struct.cpp | 4 +- test/sequence/cons.cpp | 9 +- test/sequence/define_assoc_struct.cpp | 4 +- test/sequence/define_assoc_tpl_struct.cpp | 4 +- test/sequence/define_struct.cpp | 4 +- test/sequence/define_tpl_struct.cpp | 4 +- test/sequence/filter_view.cpp | 6 +- test/sequence/iterator_range.cpp | 5 +- test/sequence/joint_view.cpp | 9 +- test/sequence/map.cpp | 13 +- test/sequence/misc.hpp | 2 +- test/sequence/nview.cpp | 2 +- test/sequence/set.cpp | 13 +- test/sequence/tr1_tuple_auto_conv.cpp | 2 +- 402 files changed, 4874 insertions(+), 5055 deletions(-) delete mode 100644 include/boost/fusion/adapted/class/class_iterator.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/at_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/begin_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/category_of_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/end_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/has_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/is_view_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/size_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/value_at_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp delete mode 100644 include/boost/fusion/adapted/class/extension.hpp create mode 100644 include/boost/fusion/algorithm/iteration/iter_fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/reverse_fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp create mode 100644 include/boost/fusion/include/iter_fold.hpp create mode 100644 include/boost/fusion/include/reverse_fold.hpp create mode 100644 include/boost/fusion/include/reverse_iter_fold.hpp create mode 100644 test/algorithm/fold.hpp create mode 100644 test/algorithm/fold2.cpp create mode 100644 test/algorithm/iter_fold.cpp create mode 100644 test/algorithm/reverse_fold.cpp create mode 100644 test/algorithm/reverse_iter_fold.cpp delete mode 100644 test/functional/make_unfused_generic.cpp delete mode 100644 test/functional/make_unfused_lvalue_args.cpp delete mode 100644 test/functional/make_unfused_rvalue_args.cpp delete mode 100644 test/functional/unfused_generic.cpp delete mode 100644 test/functional/unfused_lvalue_args.cpp delete mode 100644 test/functional/unfused_rvalue_args.cpp diff --git a/doc/adapted.qbk b/doc/adapted.qbk index c8706362..7b4324f9 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -316,8 +316,8 @@ name of the adapted struct. The sequence `(namespace0)(namespace1)...` declares the namespace for `adapted_name`. It yields to a fully qualified name for `adapted_name` of `namespace0::namespace1::... adapted_name`. -If an empty namespace sequence is given, the adapted view is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the adapted view is placed in the global namespace. If no namespace sequence is given (i.e. `BOOST_FUSION_ADAPT_STRUCT_NAMED`), the adapted view is placed in the namespace `boost::fusion::adapted`. The sequence of `(member_typeN, member_nameN)` @@ -507,8 +507,8 @@ using `adapted_name` as the name of the adapted struct. The sequence `(namespace0)(namespace1)...` declares the namespace for `adapted_name`. It yields to a fully qualified name for `adapted_name` of `namespace0::namespace1::... adapted_name`. -If an empty namespace sequence is given, the adapted view is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the adapted view is placed in the global namespace. If no namespace sequence is given (i.e. `BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED`), the adapted view is placed in the namespace `boost::fusion::adapted`. The sequence of `(member_typeN, member_nameN, key_typeN)` @@ -579,8 +579,8 @@ as a model of __random_access_sequence__. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN)` pairs declares the type and names of each of the struct members that are part of the sequence. @@ -624,8 +624,8 @@ model of __random_access_sequence__. [heading Synopsis] BOOST_FUSION_DEFINE_TPL_STRUCT( - (namespace0)(namespace1)..., (template_param0)(template_param1)..., + (namespace0)(namespace1)..., struct_name, (member_type0, member_name0) (member_type1, member_name1) @@ -643,13 +643,13 @@ model of __random_access_sequence__. The above macro generates the necessary code that defines and adapts `struct_name` as a model of __random_access_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. -The sequence `(template_param0)(template_param1)...` declares the names of -the template type parameters used. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN)` pairs declares the type and names of each of the struct members that are part of the sequence. @@ -676,7 +676,7 @@ defined in __random_access_sequence__. // Any instantiated demo::employee is a Fusion sequence BOOST_FUSION_DEFINE_TPL_STRUCT( - (demo), (Name)(Age), employee, + (Name)(Age), (demo), employee, (Name, name) (Age, age)) @@ -713,8 +713,8 @@ as a model of __random_access_sequence__ and __associative_sequence__. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN, key_typeN)` triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -764,8 +764,8 @@ model of __random_access_sequence__ and __associative_sequence__. [heading Synopsis] BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( - (namespace0)(namespace1)..., (template_param0)(template_param1)..., + (namespace0)(namespace1)..., struct_name, (member_type0, member_name0, key_type0) (member_type1, member_name1, key_type1) @@ -784,13 +784,13 @@ model of __random_access_sequence__ and __associative_sequence__. The above macro generates the necessary code that defines and adapts `struct_name` as a model of __random_access_sequence__ and __associative_sequence__. +The sequence `(template_param0)(template_param1)...` declares the names of +the template type parameters used. The sequence `(namespace0)(namespace1)...` declares the namespace for `struct_name`. It yields to a fully qualified name for `struct_name` of `namespace0::namespace1::... struct_name`. -If an empty namespace sequence is given, the struct is placed in the -global namespace. -The sequence `(template_param0)(template_param1)...` declares the names of -the template type parameters used. +If an empty namespace sequence is given (that is a macro that expands to +nothing), the struct is placed in the global namespace. The sequence of `(member_typeN, member_nameN, key_typeN)` triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -823,7 +823,7 @@ defined in __random_access_sequence__ and __associative_sequence__. // Any instantiated demo::employee is a Fusion sequence BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( - (demo), (Name)(Age), employee, + (Name)(Age), (demo), employee, (Name, name, keys::name) (Age, age, keys::age)) diff --git a/doc/algorithm.qbk b/doc/algorithm.qbk index 3fa194b2..e77249d3 100644 --- a/doc/algorithm.qbk +++ b/doc/algorithm.qbk @@ -35,9 +35,7 @@ algorithm simply returns a __joint_view__: a view that holds a reference to the original sequence `s` and the value `x`. Functions that were once sequence specific and need to be implemented N times over N different sequences are now implemented only once. That is to say that Fusion -sequences are cheaply extensible. However, an important caveat is that the -result of a sequence extending operation like __push_back__ does not retain -the properties of the original sequence such as associativity of __set__(s). +sequences are cheaply extensible. To regain the original sequence, __conversion__ functions are provided. You may use one of the __conversion__ functions to convert back to the original sequence type. @@ -59,42 +57,59 @@ a sequence repeatedly applying an operation to its elements. [section Functions] -[section fold] - +[template fold_desc[name result_of_name arg_desc arg_id arg_type_id invoke_desc semantics_elements_desc example_arg_transform example_result I0 I1 IN] [heading Description] -For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, fold returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. +For a sequence `seq`, initial state `initial_state`, and binary function object +or function pointer `f`, [^[name]] returns the result of the repeated application of +binary `f` to the result of the previous `f` invocation (`inital_state` if it is +the first call) and [arg_desc] of `seq`. +[def name_macro [name]] +[def result_of_name_macro [result_of_name]] [heading Synopsis] template< typename Sequence, typename State, typename F > - typename __result_of_fold__::type fold( - Sequence& seq, State const& initial_state, F const& f); + typename result_of_name_macro::type name_macro( + Sequence& seq, State const& initial_state, F f); + + template< + typename Sequence, + typename State, + typename F + > + typename result_of_name_macro::type name_macro( + Sequence const& seq, State const& initial_state, F f); +[def arg_type_id_macro [arg_type_id]] +[def arg_id_macro [arg_id]] +[def invoke_desc_macro [invoke_desc]] [table Parameters [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] + [[`f`][`f(s,arg_id_macro)` with return type `__boost_result_of_call__::type` must be a valid expression for current state `s` of type `S`, and for each invoke_desc_macro][Operation's argument]] ] [heading Expression Semantics] - fold(seq, initial_state, f); + name_macro(seq, initial_state, f); [*Return type]: Any type -[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. +[*Semantics]: Equivalent to [^f(... f(f(initial_state,[arg_id][I0]),[arg_id][I1]) ...[arg_id][IN])] where [^[arg_id]1 ...[arg_id]N] are [semantics_elements_desc]. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `f`. [heading Header] - #include - #include + #include + #include +[def example_result_macro [example_result]] +[def example_arg_transform_macro [example_arg_transform]] [heading Example] struct make_string { @@ -103,66 +118,32 @@ Linear, exactly `__result_of_size__::value` applications of `f`. template std::string operator()(const std::string& str, const T& t) const { - return str + boost::lexical_cast(t); + return str + boost::lexical_cast(example_arg_transform_macro); } }; ... const __vector__ vec(1,2); - assert(__fold__(vec,std::string(""), make_string()) == "12"); + assert(name_macro(vec,std::string(""), make_string()) == example_result_macro); +] +[section fold] +[fold_desc fold..__result_of_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] +[endsect] + +[section reverse_fold] +[fold_desc reverse_fold..__result_of_reverse_fold__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."21"..N..N-1..1] +[endsect] + +[section iter_fold] +[fold_desc iter_fold..__result_of_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."12"..1..2..N] +[endsect] + +[section reverse_iter_fold] +[fold_desc reverse_iter_fold..__result_of_reverse_iter_fold__..iterators on each element..it..It..iterator `it` of type `It` on an element of `seq`..consecutive iterators on the elements of `seq`..__deref__(t).."21"..N..N-1..1] [endsect] [section accumulate] - -[heading Description] -For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, accumulate returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F - > - typename __result_of_accumulate__::type accumulate( - Sequence& seq, State const& initial_state, F const& f); - -[table Parameters - [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]] - [[`initial_state`][Any type][Initial state]] - [[`f`][`__boost_result_of_call__::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]] -] - -[heading Expression Semantics] - accumulate(seq, initial_state, f); - -[*Return type]: Any type - -[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `f`. - -[heading Header] - - #include - #include - -[heading Example] - struct make_string - { - typedef std::string result_type; - - template - std::string operator()(const std::string& str, const T& t) const - { - return str + boost::lexical_cast(t); - } - }; - ... - const __vector__ vec(1,2); - assert(__accumulate__(vec,std::string(""), make_string()) == "12"); - +[fold_desc accumulate..__result_of_accumulate__..each element..e..E..element `e` of type `E` in `seq`..the consecutive elements of `seq`..t.."12"..1..2..N] [endsect] [section for_each] @@ -176,7 +157,7 @@ Applies a unary function object to each element of a sequence. typename F > typename __result_of_for_each__::type for_each( - Sequence& seq, F const& f); + Sequence& seq, F f); [table Parameters [[Parameter][Requirement][Description]] @@ -219,84 +200,67 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [section Metafunctions] -[section fold] - +[template meta_fold_desc[name name_func arg_id arg_type_id invoke_meta_desc] [heading Description] -Returns the result type of __fold__. +Returns the result type of [name_func]. +[def name_macro [name]] [heading Synopsis] template< typename Sequence, typename State, typename F> - struct fold + struct name_macro { typedef __unspecified__ type; }; +[def arg_type_id_macro [arg_type_id]] +[def arg_id_macro [arg_id]] +[def invoke_meta_desc_macro [invoke_meta_desc]] [table Parameters - [[Parameter] [Requirement] [Description]] + [[Parameter] [Requirement] [Description]] [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,arg_id_macro)` with current state `s` of type `S`, and an invoke_meta_desc_macro][The operation to be applied on traversal]] ] [heading Expression Semantics] - __result_of_fold__::type + name_macro::type [*Return type]: Any type -[*Semantics]: Returns the result of applying `fold` to a sequence of type `Sequence`, with an initial state of -type `State` and binary function object or function pointer of type `F`. +[*Semantics]: Returns the result of applying [name_func] to a sequence of type +`Sequence`, with an initial state of type `State` and binary function object or +function pointer of type `F`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `F`. [heading Header] - #include - #include + #include + #include +] +[section fold] +[meta_fold_desc fold..__fold__..e..E..element `e` of type `E` in `seq`] +[endsect] + +[section reverse_fold] +[meta_fold_desc reverse_fold..__reverse_fold__..e..E..element `e` of type `E` in `seq`] +[endsect] + +[section iter_fold] +[meta_fold_desc iter_fold..__iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] +[endsect] + +[section reverse_iter_fold] +[meta_fold_desc reverse_iter_fold..__reverse_iter_fold__..it..It..iterator `it` of type `It` on an element of `seq`] [endsect] [section accumulate] - -[heading Description] -Returns the result type of __accumulate__. - -[heading Synopsis] - template< - typename Sequence, - typename State, - typename F> - struct accumulate - { - typedef __unspecified__ type; - }; - -[table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]] - [[`State`] [Any type] [The initial state for the first application of `F`]] - [[`F`] [`__boost_result_of_call__::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]] -] - -[heading Expression Semantics] - __result_of_accumulate__::type - -[*Return type]: Any type - -[*Semantics]: Returns the result of applying `accumulate` to a sequence of type `Sequence`, with an initial state of -type `State` and binary function object or function pointer of type `F`. - -[heading Complexity] -Linear, exactly `__result_of_size__::value` applications of `F`. - -[heading Header] - - #include - #include - +[meta_fold_desc accumulate..__accumulate__..e..E..element `e` of type `E` in `seq`] [endsect] [section for_each] diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 8a201a1c..ca301a2a 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -32,6 +32,8 @@ This section summarizes significant changes to the Fusion library. __adapt_assoc_struct_named_ns__ (Christopher Schmidt) * April 5, 2010: Added __define_struct__, __define_tpl_struct__, __define_assoc_struct__ and __define_assoc_tpl_struct__ (Christopher Schmidt) +* June 18, 2010: Added __reverse_fold__, __iter_fold__ and __reverse_iter_fold__ + (Christopher Schmidt) [endsect] diff --git a/doc/container.qbk b/doc/container.qbk index 226d3da1..83c10c1a 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -302,7 +302,7 @@ complexity (see __overloaded_functions__). #include #include - #include + #include #include [heading Synopsis] @@ -384,7 +384,7 @@ __overloaded_functions__). #include #include - #include + #include #include [heading Synopsis] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 97231b3c..9118c130 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -213,6 +213,12 @@ [def __algorithms__ [link fusion.algorithm Algorithms]] [def __fold__ [link fusion.algorithm.iteration.functions.fold `fold`]] [def __result_of_fold__ [link fusion.algorithm.iteration.metafunctions.fold `result_of::fold`]] +[def __reverse_fold__ [link fusion.algorithm.iteration.functions.reverse_fold `reverse_fold`]] +[def __result_of_reverse_fold__ [link fusion.algorithm.iteration.metafunctions.reverse_fold `result_of::reverse_fold`]] +[def __iter_fold__ [link fusion.algorithm.iteration.functions.iter_fold `iter_fold`]] +[def __result_of_iter_fold__ [link fusion.algorithm.iteration.metafunctions.iter_fold `result_of::iter_fold`]] +[def __reverse_iter_fold__ [link fusion.algorithm.iteration.functions.reverse_iter_fold `reverse_iter_fold`]] +[def __result_of_reverse_iter_fold__ [link fusion.algorithm.iteration.metafunctions.reverse_iter_fold `result_of::reverse_iter_fold`]] [def __accumulate__ [link fusion.algorithm.iteration.functions.accumulate `accumulate`]] [def __result_of_accumulate__ [link fusion.algorithm.iteration.metafunctions.accumulate `result_of::accumulate`]] [def __for_each__ [link fusion.algorithm.iteration.functions.for_each `for_each`]] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index d1f544ad..844907ad 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index 55525001..5d07b5bf 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -56,7 +56,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

- + Header

#include <boost/fusion/adapted.hpp>
diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html
index 149a2e24..b9968dab 100644
--- a/doc/html/fusion/adapted/adapt_assoc.html
+++ b/doc/html/fusion/adapted/adapt_assoc.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
@@ -48,7 +48,7 @@
     )
 
- + Semantics

@@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be adapted.

- + Header
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
 #include <boost/fusion/include/adapt_assoc_struct.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/adapt_assoc_struct_named.html b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
index 0c5c5e27..2a8996cf 100644
--- a/doc/html/fusion/adapted/adapt_assoc_struct_named.html
+++ b/doc/html/fusion/adapted/adapt_assoc_struct_named.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ Sequence. The given struct is adapted using the given name.

- + Synopsis
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
@@ -58,7 +58,7 @@
     )
 
- + Semantics

@@ -71,8 +71,9 @@ It yields to a fully qualified name for adapted_name of namespace0::namespace1::... adapted_name. If an empty namespace - sequence is given, the adapted view is placed in the global namespace. If - no namespace sequence is given (i.e. BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED), + sequence is given (that is a macro that expands to nothing), the adapted + view is placed in the global namespace. If no namespace sequence is given + (i.e. BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED), the adapted view is placed in the namespace boost::fusion::adapted. The sequence of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key type of each of the struct members that are part of the sequence. @@ -82,14 +83,14 @@ should be the fully namespace qualified name of the struct to be converted.

- + Header
#include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
 #include <boost/fusion/include/adapt_assoc_struct_named.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
index ce580253..296ee714 100644
--- a/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
+++ b/doc/html/fusion/adapted/adapt_assoc_tpl_struct.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT(
@@ -50,7 +50,7 @@
     )
 
- + Semantics

@@ -72,14 +72,14 @@ should be the fully namespace qualified name of the struct to be adapted.

- + Header
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
 #include <boost/fusion/include/adapt_assoc_struct.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html
index 3cd18118..a1d4e37f 100644
--- a/doc/html/fusion/adapted/adapt_struct.html
+++ b/doc/html/fusion/adapted/adapt_struct.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ Access Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_STRUCT(
@@ -47,7 +47,7 @@
     )
 
- + Semantics

@@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be adapted.

- + Header
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html
index 25cebc10..9f96e242 100644
--- a/doc/html/fusion/adapted/adapt_struct_named.html
+++ b/doc/html/fusion/adapted/adapt_struct_named.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ Access Sequence. The given struct is adapted using the given name.

- + Synopsis
BOOST_FUSION_ADAPT_STRUCT_NAMED(
@@ -57,7 +57,7 @@
     )
 
- + Semantics

@@ -69,8 +69,9 @@ It yields to a fully qualified name for adapted_name of namespace0::namespace1::... adapted_name. If an empty namespace - sequence is given, the adapted view is placed in the global namespace. If - no namespace sequence is given (i.e. BOOST_FUSION_ADAPT_STRUCT_NAMED), + sequence is given (that is a macro that expands to nothing), the adapted + view is placed in the global namespace. If no namespace sequence is given + (i.e. BOOST_FUSION_ADAPT_STRUCT_NAMED), the adapted view is placed in the namespace boost::fusion::adapted. The sequence of (member_typeN, member_nameN) pairs declares the type and names of each of the struct members that are part of the sequence. @@ -80,14 +81,14 @@ should be the fully namespace qualified name of the struct to be converted.

- + Header
#include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
 #include <boost/fusion/include/adapt_struct_named.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/adapt_tpl_struct.html b/doc/html/fusion/adapted/adapt_tpl_struct.html
index f86598f6..01c916c3 100644
--- a/doc/html/fusion/adapted/adapt_tpl_struct.html
+++ b/doc/html/fusion/adapted/adapt_tpl_struct.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_TPL_STRUCT(
@@ -49,7 +49,7 @@
     )
 
- + Semantics

@@ -69,14 +69,14 @@ should be the fully namespace qualified name of the struct to be adapted.

- + Header
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
 
- + Example
namespace demo
diff --git a/doc/html/fusion/adapted/array.html b/doc/html/fusion/adapted/array.html
index a2c47f23..d95c88d5 100644
--- a/doc/html/fusion/adapted/array.html
+++ b/doc/html/fusion/adapted/array.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -32,20 +32,22 @@ Access Sequence.

- + Header
#include <boost/fusion/adapted/array.hpp>
 #include <boost/fusion/include/array.hpp>
 
- + Model of
- +
- + Example
int arr[3] = {1,2,3};
diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html
index 49e5fce7..0d1ab2ce 100644
--- a/doc/html/fusion/adapted/boost__array.html
+++ b/doc/html/fusion/adapted/boost__array.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -33,20 +33,22 @@ Access Sequence.

- + Header
#include <boost/fusion/adapted/boost_array.hpp>
 #include <boost/fusion/include/boost_array.hpp>
 
- + Model of
- +
- + Example
boost::array<int,3> arr = {{1,2,3}};
@@ -58,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index cb534515..f28859e2 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+
@@ -33,19 +33,21 @@ Sequence.

- + Header
#include <boost/fusion/adapted/boost_tuple.hpp>
 #include <boost/fusion/include/boost_tuple.hpp>
 
- + Model of
- +
- + Example
boost::tuple<int,std::string> example_tuple(101, "hello");
@@ -53,7 +55,7 @@
 std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
 
- + See also

diff --git a/doc/html/fusion/adapted/define_assoc_struct.html b/doc/html/fusion/adapted/define_assoc_struct.html index cb76dd14..caf565a4 100644 --- a/doc/html/fusion/adapted/define_assoc_struct.html +++ b/doc/html/fusion/adapted/define_assoc_struct.html @@ -22,12 +22,12 @@

PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ Sequence.

- + Synopsis
BOOST_FUSION_DEFINE_ASSOC_STRUCT(
@@ -49,7 +49,7 @@
     ...
     )
 
-
+

Notation

str
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -80,9 +80,12 @@ It yields to a fully qualified name for struct_name of namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key - type of each of the struct members that are part of the sequence. + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, + member_nameN, + key_typeN) + triples declares the type, name and key type of each of the struct members + that are part of the sequence.

The macro should be used at global scope. Semantics of an expression is defined @@ -179,14 +182,14 @@

- + Header
#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
 #include <boost/fusion/include/define_assoc_struct.hpp>
 
- + Example
namespace keys
diff --git a/doc/html/fusion/adapted/define_assoc_tpl_struct.html b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
index f88942f0..3e56a19d 100644
--- a/doc/html/fusion/adapted/define_assoc_tpl_struct.html
+++ b/doc/html/fusion/adapted/define_assoc_tpl_struct.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,19 +38,19 @@ Sequence.

- + Synopsis
BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
-    (namespace0)(namespace1)...,
     (template_param0)(template_param1)...,
+    (namespace0)(namespace1)...,
     struct_name,
     (member_type0, member_name0, key_type0)
     (member_type1, member_name1, key_type1)
     ...
     )
 
-
+

Notation

Str
@@ -73,21 +73,20 @@
- + Expression Semantics

The above macro generates the necessary code that defines and adapts struct_name as a model of Random Access Sequence and Associative - Sequence. The sequence (namespace0)(namespace1)... - declares the namespace for struct_name. - It yields to a fully qualified name for struct_name - of namespace0::namespace1::... + Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (namespace0)(namespace1)... declares the namespace for struct_name. It yields to a fully qualified + name for struct_name of + namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - (template_param0)(template_param1)... declares the names of the template type - parameters used. The sequence of (member_typeN, + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, member_nameN, key_typeN) triples declares the type, name and key type of each of the struct members @@ -188,14 +187,14 @@

- + Header
#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
 #include <boost/fusion/include/define_assoc_struct.hpp>
 
- + Example
namespace keys
@@ -206,7 +205,7 @@
 
 // Any instantiated demo::employee is a Fusion sequence
 BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
-    (demo), (Name)(Age), employee,
+    (Name)(Age), (demo), employee,
     (Name, name, keys::name)
     (Age, age, keys::age))
 
diff --git a/doc/html/fusion/adapted/define_struct.html b/doc/html/fusion/adapted/define_struct.html index d8090fb1..bd327f58 100644 --- a/doc/html/fusion/adapted/define_struct.html +++ b/doc/html/fusion/adapted/define_struct.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ Access Sequence.

- + Synopsis
BOOST_FUSION_DEFINE_STRUCT(
@@ -48,7 +48,7 @@
     ...
     )
 
-
+

Notation

str
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -78,9 +78,11 @@ It yields to a fully qualified name for struct_name of namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - of (member_typeN, member_nameN) pairs declares the type and names of each - of the struct members that are part of the sequence. + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, + member_nameN) + pairs declares the type and names of each of the struct members that are + part of the sequence.

The macro should be used at global scope. Semantics of an expression is defined @@ -176,14 +178,14 @@

- + Header
#include <boost/fusion/adapted/struct/define_struct.hpp>
 #include <boost/fusion/include/define_struct.hpp>
 
- + Example
// demo::employee is a Fusion sequence
diff --git a/doc/html/fusion/adapted/define_tpl_struct.html b/doc/html/fusion/adapted/define_tpl_struct.html
index 9fa49309..3388fb5c 100644
--- a/doc/html/fusion/adapted/define_tpl_struct.html
+++ b/doc/html/fusion/adapted/define_tpl_struct.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,19 +37,19 @@ Access Sequence.

- + Synopsis
BOOST_FUSION_DEFINE_TPL_STRUCT(
-    (namespace0)(namespace1)...,
     (template_param0)(template_param1)...,
+    (namespace0)(namespace1)...,
     struct_name,
     (member_type0, member_name0)
     (member_type1, member_name1)
     ...
     )
 
-
+

Notation

Str
@@ -72,20 +72,19 @@
- + Expression Semantics

The above macro generates the necessary code that defines and adapts struct_name as a model of Random - Access Sequence. The sequence (namespace0)(namespace1)... - declares the namespace for struct_name. - It yields to a fully qualified name for struct_name - of namespace0::namespace1::... + Access Sequence. The sequence (template_param0)(template_param1)... + declares the names of the template type parameters used. The sequence (namespace0)(namespace1)... declares the namespace for struct_name. It yields to a fully qualified + name for struct_name of + namespace0::namespace1::... struct_name. If an empty namespace - sequence is given, the struct is placed in the global namespace. The sequence - (template_param0)(template_param1)... declares the names of the template type - parameters used. The sequence of (member_typeN, + sequence is given (that is a macro that expands to nothing), the struct is + placed in the global namespace. The sequence of (member_typeN, member_nameN) pairs declares the type and names of each of the struct members that are part of the sequence. @@ -184,19 +183,19 @@

- + Header
#include <boost/fusion/adapted/struct/define_struct.hpp>
 #include <boost/fusion/include/define_struct.hpp>
 
- + Example
// Any instantiated demo::employee is a Fusion sequence
 BOOST_FUSION_DEFINE_TPL_STRUCT(
-    (demo), (Name)(Age), employee,
+    (Name)(Age), (demo), employee,
     (Name, name)
     (Age, age))
 
diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index 4ab8b889..d6e200f4 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -32,35 +32,35 @@ sequences fully conforming fusion sequences.

- + Header
#include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/include/mpl.hpp>
 
- + Model of
- + Example
mpl::vector_c<int, 123, 456> vec_c;
@@ -73,7 +73,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 5c4fb866..36548e6e 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+
@@ -33,20 +33,22 @@ Access Sequence.

- + Header
#include <boost/fusion/adapted/std_pair.hpp>
 #include <boost/fusion/include/std_pair.hpp>
 
- + Model of
- +
- + Example
std::pair<int, std::string> p(123, "Hola!!!");
@@ -55,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index e896edaa..f338790f 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+
@@ -44,7 +44,7 @@

- + Lazy Evaluation

@@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

- + Sequence Extension

@@ -82,15 +82,12 @@ and the value x. Functions that were once sequence specific and need to be implemented N times over N different sequences are now implemented only once. That is to say that Fusion - sequences are cheaply extensible. However, an important caveat is that the - result of a sequence extending operation like push_back does not retain the properties - of the original sequence such as associativity of set(s). To regain the original sequence, - Conversion functions - are provided. You may use one of the Conversion + sequences are cheaply extensible. To regain the original sequence, Conversion + functions are provided. You may use one of the Conversion functions to convert back to the original sequence type.

- + Header

#include <boost/fusion/algorithm.hpp>
diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
index 962778fc..03c5901e 100644
--- a/doc/html/fusion/algorithm/iteration.html
+++ b/doc/html/fusion/algorithm/iteration.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header
#include <boost/fusion/algorithm/iteration.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
index d4828078..efda40f5 100644
--- a/doc/html/fusion/algorithm/iteration/functions.html
+++ b/doc/html/fusion/algorithm/iteration/functions.html
@@ -22,12 +22,15 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html index 1f532318..4bffdb23 100644 --- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html @@ -6,7 +6,7 @@ - + @@ -20,40 +20,61 @@
-PrevUpHomeNext +PrevUpHomeNext
-
+
-
- - Description -

- For a sequence seq, initial - state initial_state, - and binary function object or function pointer f, - accumulate returns the result of the repeated application of binary - f to the result of the - previous f invocation - (inital_state if it is - the first call) and each element of seq. -

-
- - Synopsis -
+ +

+
+ + Description +
+

+

+

+ For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + accumulate returns the result of the repeated application + of binary f to the + result of the previous f + invocation (inital_state + if it is the first call) and each element of seq. +

+

+ +

+
+ + Synopsis +
+

+ +

template<
     typename Sequence,
     typename State,
     typename F
     >
-typename result_of::accumulate<Sequence, State, F>::type accumulate(
-    Sequence& seq, State const& initial_state, F const& f);
+typename result_of::accumulate<Sequence, State const, F>::type accumulate(
+    Sequence& seq, State const& initial_state, F f);
+    
+template<
+    typename Sequence,
+    typename State,
+    typename F
+    >
+typename result_of::accumulate<Sequence const, State const, F>::type accumulate(
+    Sequence const& seq, State const& initial_state, F f);
 
+

+

-

Table 1.38. Parameters

+

Table 1.41. Parameters

@@ -62,117 +83,142 @@ +

+ Parameter +

+ +

+ Requirement +

+ +

+ Description +

+ +

+ seq +

+ +

+ A model of Forward + Sequence +

+ +

+ Operation's argument +

+ +

+ initial_state +

+ +

+ Any type +

+ +

+ Initial state +

+ +

+ f +

+ +

+ f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E + in seq +

+ +

+ Operation's argument +

+
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence, f(s,e) must be a valid expression - for current state s, - and each element e - in seq -

-
-

- Operation's argument -

-
-

- initial_state -

-
-

- Any type -

-
-

- Initial state -

-
-

- f -

-
-

- boost::result_of<F(S,E)>::type - is the return type of f(s,e) current state s of type S, - and for each element e - of type E in - seq -

-
-

- Operation's argument -

-
-
- - Expression - Semantics -
-
accumulate(seq, initial_state, f);
+


+ +

+
+ + Expression + Semantics +
+

+ +

+
accumulate(seq, initial_state, f);
 

- Return type: Any type -

+

- Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 - ...eN - are the elements of seq. -

-
- - Complexity -
+ Return type: Any type +

- Linear, exactly result_of::size<Sequence>::value applications of f. -

-
- - Header -
-
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
-#include <boost/fusion/include/accumulate.hpp>
+            

+

+ Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

+

+ +

+
+ + Complexity +
+

+

+

+ Linear, exactly result_of::size<Sequence>::value applications of f. +

+

+ +

+
+ + Header +
+

+ +

+
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+#include <boost/fusion/include/accumulate.hpp>
 
-
- - Example -
+

+ +

+
+ + Example +
+

+ +

struct make_string
 {
     typedef std::string result_type;
@@ -180,13 +226,15 @@
     template<typename T>
     std::string operator()(const std::string& str, const T& t) const
     {
-        return str + boost::lexical_cast<std::string>(t);
+        return str + boost::lexical_cast<std::string>(t);
     }
 };
 ...
 const vector<int,int> vec(1,2);
-assert(accumulate(vec,std::string(""), make_string()) == "12");
+assert(accumulate(vec,std::string(""), make_string()) == "12");
 
+

+

@@ -199,7 +247,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html index fd2d6daf..56889767 100644 --- a/doc/html/fusion/algorithm/iteration/functions/fold.html +++ b/doc/html/fusion/algorithm/iteration/functions/fold.html @@ -7,7 +7,7 @@ - + @@ -20,37 +20,61 @@

-PrevUpHomeNext +PrevUpHomeNext
-
+
-
- - Description -

- For a sequence seq, initial - state initial_state, - and binary function object or function pointer f, - fold returns the result of the repeated application of binary f to the result of the previous f invocation (inital_state - if it is the first call) and each element of seq. -

-
- - Synopsis -
+ +

+
+ + Description +
+

+

+

+ For a sequence seq, + initial state initial_state, + and binary function object or function pointer f, + fold returns the result of the repeated application + of binary f to the + result of the previous f + invocation (inital_state + if it is the first call) and each element of seq. +

+

+ +

+
+ + Synopsis +
+

+ +

template<
     typename Sequence,
     typename State,
     typename F
     >
-typename result_of::fold<Sequence, State, F>::type fold(
-    Sequence& seq, State const& initial_state, F const& f);
+typename result_of::fold<Sequence, State const, F>::type fold(
+    Sequence& seq, State const& initial_state, F f);
+    
+template<
+    typename Sequence,
+    typename State,
+    typename F
+    >
+typename result_of::fold<Sequence const, State const, F>::type fold(
+    Sequence const& seq, State const& initial_state, F f);
 
+

+

-

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -59,117 +83,142 @@ +

+ Parameter +

+ +

+ Requirement +

+ +

+ Description +

+ +

+ seq +

+ +

+ A model of Forward + Sequence +

+ +

+ Operation's argument +

+ +

+ initial_state +

+ +

+ Any type +

+ +

+ Initial state +

+ +

+ f +

+ +

+ f(s,e) with return type boost::result_of<F(S,E)>::type must be a valid expression + for current state s + of type S, + and for each element e + of type E + in seq +

+ +

+ Operation's argument +

+
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- seq -

-
-

- A model of Forward - Sequence, f(s,e) must be a valid expression - for current state s, - and each element e - in seq -

-
-

- Operation's argument -

-
-

- initial_state -

-
-

- Any type -

-
-

- Initial state -

-
-

- f -

-
-

- boost::result_of<F(S,E)>::type - is the return type of f(s,e) current state s of type S, - and for each element e - of type E in - seq -

-
-

- Operation's argument -

-
-
- - Expression - Semantics -
-
fold(seq, initial_state, f);
+


+ +

+
+ + Expression + Semantics +
+

+ +

+
fold(seq, initial_state, f);
 

- Return type: Any type -

+

- Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 - ...eN - are the elements of seq. -

-
- - Complexity -
+ Return type: Any type +

- Linear, exactly result_of::size<Sequence>::value applications of f. -

-
- - Header -
-
#include <boost/fusion/algorithm/iteration/fold.hpp>
-#include <boost/fusion/include/fold.hpp>
+            

+

+ Semantics: Equivalent to f(... + f(f(initial_state,e1),e2) ...eN) where e1 ...eN + are the consecutive elements of seq. +

+

+ +

+
+ + Complexity +
+

+

+

+ Linear, exactly result_of::size<Sequence>::value applications of f. +

+

+ +

+
+ + Header +
+

+ +

+
#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/include/fold.hpp>
 
-
- - Example -
+

+ +

+
+ + Example +
+

+ +

struct make_string
 {
     typedef std::string result_type;
@@ -177,13 +226,15 @@
     template<typename T>
     std::string operator()(const std::string& str, const T& t) const
     {
-        return str + boost::lexical_cast<std::string>(t);
+        return str + boost::lexical_cast<std::string>(t);
     }
 };
 ...
 const vector<int,int> vec(1,2);
-assert(fold(vec,std::string(""), make_string()) == "12");
+assert(fold(vec,std::string(""), make_string()) == "12");
 
+

+

@@ -196,7 +247,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html index fd92401a..4da2722b 100644 --- a/doc/html/fusion/algorithm/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Applies a unary function object to each element of a sequence.

- + Synopsis
template<
@@ -42,10 +42,10 @@
     typename F
     >
 typename result_of::for_each<Sequence, F>::type for_each(
-    Sequence& seq, F const& f);
+    Sequence& seq, F f);
 
-

Table 1.39. Parameters

+

Table 1.42. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -126,21 +126,21 @@ in seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
#include <boost/fusion/algorithm/iteration/for_each.hpp>
 #include <boost/fusion/include/for_each.hpp>
 
- + Example
struct increment
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html
index db18f64c..7b8aa4bc 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions.html
@@ -22,12 +22,15 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html index 627245df..520c574e 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html @@ -6,7 +6,7 @@ - + @@ -20,34 +20,47 @@
-PrevUpHomeNext +PrevUpHomeNext
-
+
-
- - Description -

- Returns the result type of accumulate. -

-
- - Synopsis -
+ +

+
+ + Description +
+

+

+

+ Returns the result type of accumulate. +

+

+ +

+
+ + Synopsis +
+

+ +

template<
     typename Sequence,
     typename State,
     typename F>
-struct accumulate
+struct accumulate
 {
     typedef unspecified type;
 };
 
+

+

-

Table 1.41. Parameters

+

Table 1.47. Parameters

@@ -56,112 +69,132 @@ +

+ Parameter +

+ +

+ Requirement +

+ +

+ Description +

+ +

+ Sequence +

+ +

+ A model of Forward + Sequence +

+ +

+ The sequence to iterate +

+ +

+ State +

+ +

+ Any type +

+ +

+ The initial state for the first application of F +

+ +

+ F +

+ +

+ boost::result_of<F(S,E)>::type is the return type + of f(s,e) with current state s of type S, and an element e of type E in seq +

+ +

+ The operation to be applied on traversal +

+
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to iterate -

-
-

- State -

-
-

- Any type -

-
-

- The initial state for the first application of F -

-
-

- F -

-
-

- boost::result_of<F(S,E)>::type - is the return type of f(s,e) for current state s of type S, - and for each element e - of type E in - seq -

-
-

- The operation to be applied on forward traversal -

-
-
- - Expression - Semantics -
-
result_of::accumulate<Sequence, State, F>::type
+


+ +

+
+ + Expression + Semantics +
+

+ +

+
accumulate<Sequence, State, F>::type
 

- Return type: Any type -

+

- Semantics: Returns the result of applying - accumulate to a sequence - of type Sequence, with - an initial state of type State - and binary function object or function pointer of type F. -

-
- - Complexity -
+ Return type: Any type +

- Linear, exactly result_of::size<Sequence>::value applications of F. -

-
- - Header -
-
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
-#include <boost/fusion/include/accumulate.hpp>
+            

+

+ Semantics: Returns the result of applying + accumulate to a sequence of + type Sequence, with + an initial state of type State + and binary function object or function pointer of type F. +

+

+ +

+
+ + Complexity +
+

+

+

+ Linear, exactly result_of::size<Sequence>::value applications of F. +

+

+ +

+
+ + Header +
+

+ +

+
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+#include <boost/fusion/include/accumulate.hpp>
 
+

+

@@ -174,7 +207,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html index 71bd0f0e..c4771084 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html @@ -7,7 +7,7 @@ - + @@ -20,34 +20,47 @@

-PrevUpHomeNext +PrevUpHomeNext
-
+
-
- - Description -

- Returns the result type of fold. -

-
- - Synopsis -
+ +

+
+ + Description +
+

+

+

+ Returns the result type of fold. +

+

+ +

+
+ + Synopsis +
+

+ +

template<
     typename Sequence,
     typename State,
     typename F>
-struct fold
+struct fold
 {
     typedef unspecified type;
 };
 
+

+

-

Table 1.40. Parameters

+

Table 1.43. Parameters

@@ -56,112 +69,132 @@ +

+ Parameter +

+ +

+ Requirement +

+ +

+ Description +

+ +

+ Sequence +

+ +

+ A model of Forward + Sequence +

+ +

+ The sequence to iterate +

+ +

+ State +

+ +

+ Any type +

+ +

+ The initial state for the first application of F +

+ +

+ F +

+ +

+ boost::result_of<F(S,E)>::type is the return type + of f(s,e) with current state s of type S, and an element e of type E in seq +

+ +

+ The operation to be applied on traversal +

+
-

- Parameter -

-
-

- Requirement -

-
-

- Description -

-
-

- Sequence -

-
-

- A model of Forward - Sequence -

-
-

- The sequence to iterate -

-
-

- State -

-
-

- Any type -

-
-

- The initial state for the first application of F -

-
-

- F -

-
-

- boost::result_of<F(S,E)>::type - is the return type of f(s,e) for current state s of type S, - and for each element e - of type E in - seq -

-
-

- The operation to be applied on forward traversal -

-
-
- - Expression - Semantics -
-
result_of::fold<Sequence, State, F>::type
+


+ +

+
+ + Expression + Semantics +
+

+ +

+
fold<Sequence, State, F>::type
 

- Return type: Any type -

+

- Semantics: Returns the result of applying - fold to a sequence of - type Sequence, with an - initial state of type State - and binary function object or function pointer of type F. -

-
- - Complexity -
+ Return type: Any type +

- Linear, exactly result_of::size<Sequence>::value applications of F. -

-
- - Header -
-
#include <boost/fusion/algorithm/iteration/fold.hpp>
-#include <boost/fusion/include/fold.hpp>
+            

+

+ Semantics: Returns the result of applying + fold to a sequence of type + Sequence, with an initial + state of type State + and binary function object or function pointer of type F. +

+

+ +

+
+ + Complexity +
+

+

+

+ Linear, exactly result_of::size<Sequence>::value applications of F. +

+

+ +

+
+ + Header +
+

+ +

+
#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/include/fold.hpp>
 
+

+

@@ -174,7 +207,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html index dd215eb9..0a148a03 100644 --- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -31,11 +31,11 @@ return type of for_each is always void.

- + Description
- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.42. Parameters

+

Table 1.48. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/iteration/for_each.hpp>
diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
index ddc71d4f..90112986 100644
--- a/doc/html/fusion/algorithm/query.html
+++ b/doc/html/fusion/algorithm/query.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -34,7 +34,7 @@ The query algorithms provide support for searching and analyzing sequences.

- + Header
#include <boost/fusion/algorithm/query.hpp>
diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
index 99f9f4c4..16b821b2 100644
--- a/doc/html/fusion/algorithm/query/functions.html
+++ b/doc/html/fusion/algorithm/query/functions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html index 882a7298..5af55a6c 100644 --- a/doc/html/fusion/algorithm/query/functions/all.html +++ b/doc/html/fusion/algorithm/query/functions/all.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
all
- + Description

@@ -38,7 +38,7 @@ element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.44. Parameters

+

Table 1.50. Parameters

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

- + Expression Semantics
@@ -132,21 +132,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/all.hpp>
 #include <boost/fusion/include/all.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
index f281b531..f7b5e9f2 100644
--- a/doc/html/fusion/algorithm/query/functions/any.html
+++ b/doc/html/fusion/algorithm/query/functions/any.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
any
- + Description

@@ -38,7 +38,7 @@ least one element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.43. Parameters

+

Table 1.49. Parameters

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

- + Expression semantics
@@ -132,21 +132,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/any.hpp>
 #include <boost/fusion/include/any.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
index ec6ea4b2..46dd2be2 100644
--- a/doc/html/fusion/algorithm/query/functions/count.html
+++ b/doc/html/fusion/algorithm/query/functions/count.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the number of elements of a given type within a sequence.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.48. Parameters

+

Table 1.54. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -128,21 +128,21 @@ t in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/count.hpp>
 #include <boost/fusion/include/count.hpp>
 
- + Example
const vector<double,int,int> vec(1.0,2,3);
diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
index 8aec8baf..129c4a0b 100644
--- a/doc/html/fusion/algorithm/query/functions/count_if.html
+++ b/doc/html/fusion/algorithm/query/functions/count_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ a given unary function object evaluates to true.

- + Synopsis
template<
@@ -46,7 +46,7 @@
     Sequence const& seq, F f);
 
-

Table 1.49. Parameters

+

Table 1.55. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -127,21 +127,21 @@ in seq where f evaluates to true.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/count_if.hpp>
 #include <boost/fusion/include/count_if.hpp>
 
- + Example
const vector<int,int,int> vec(1,2,3);
diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
index 5cc82a2b..57d25726 100644
--- a/doc/html/fusion/algorithm/query/functions/find.html
+++ b/doc/html/fusion/algorithm/query/functions/find.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Finds the first element of a given type within a sequence.

- + Synopsis
template<
@@ -50,7 +50,7 @@
 unspecified find(Sequence& seq);
 
-

Table 1.46. Parameters

+

Table 1.52. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find.hpp>
 #include <boost/fusion/include/find.hpp>
 
- + Example
const vector<char,int> vec('a','0');
diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
index 3f80cd31..dae720ac 100644
--- a/doc/html/fusion/algorithm/query/functions/find_if.html
+++ b/doc/html/fusion/algorithm/query/functions/find_if.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -32,11 +32,11 @@ Lambda Expression evaluates to boost::mpl::true_.

- + Description
- + Synopsis
template<
@@ -52,7 +52,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.47. Parameters

+

Table 1.53. Parameters

@@ -117,7 +117,7 @@

- + Expression Semantics
@@ -135,7 +135,7 @@ if there is no such element.

- + Complexity

@@ -143,14 +143,14 @@

  1. - include <boost/fusion/algorithm/query/find_if.hpp> -
  2. + include <boost/fusion/algorithm/query/find_if.hpp> +
  3. - include <boost/fusion/include/find_if.hpp> -
  4. + include <boost/fusion/include/find_if.hpp> +
- + Example
const vector<double,int> vec(1.0,2);
diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
index 14c2c9a4..86745f15 100644
--- a/doc/html/fusion/algorithm/query/functions/none.html
+++ b/doc/html/fusion/algorithm/query/functions/none.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.45. Parameters

+

Table 1.51. Parameters

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

- + Expression Semantics
@@ -132,21 +132,21 @@ element e in seq. Result equivalent to !any(seq, f).

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/none.hpp>
 #include <boost/fusion/include/none.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html
index 9ebc4f86..c0de13eb 100644
--- a/doc/html/fusion/algorithm/query/metafunctions.html
+++ b/doc/html/fusion/algorithm/query/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html index 941a2dd5..5d1f3658 100644 --- a/doc/html/fusion/algorithm/query/metafunctions/all.html +++ b/doc/html/fusion/algorithm/query/metafunctions/all.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
all
- + Description

A metafunction returning the result type of all.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.51. Parameters

+

Table 1.57. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/all.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
index 5255ddfe..31a573b9 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
any
- + Description

A metafunction returning the result type of any.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.50. Parameters

+

Table 1.56. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/any.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
index b7aa7672..019790fc 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ given the sequence and search types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.55. Parameters

+

Table 1.61. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ int.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/count.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
index 19e2c20c..bec283a4 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ given the sequence and predicate types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.56. Parameters

+

Table 1.62. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ always int.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/count_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
index 222f4d62..a871f196 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ search types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.53. Parameters

+

Table 1.59. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ if there is no such element.

- + Complexity

Linear, at most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
index b6c46e76..22770e23 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ predicate types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.54. Parameters

+

Table 1.60. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
index f879c199..e7d1480d 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

A metafunction returning the result type of none.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.52. Parameters

+

Table 1.58. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/none.hpp>
diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
index 701c0cac..58464381 100644
--- a/doc/html/fusion/algorithm/transformation.html
+++ b/doc/html/fusion/algorithm/transformation.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -35,7 +35,7 @@ by performing some sort of transformation. In reality the new sequences are views onto the data in the original sequences.

-
+
@@ -47,7 +47,7 @@

[Note] Note
- + Header
#include <boost/fusion/algorithm/transformation.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
index f961d36e..c72af4f3 100644
--- a/doc/html/fusion/algorithm/transformation/functions.html
+++ b/doc/html/fusion/algorithm/transformation/functions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html index d106d878..03f4bb84 100644 --- a/doc/html/fusion/algorithm/transformation/functions/clear.html +++ b/doc/html/fusion/algorithm/transformation/functions/clear.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

clear returns an empty sequence.

- + Synposis
template<
@@ -43,7 +43,7 @@
 typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
 
-

Table 1.66. Parameters

+

Table 1.72. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,21 +103,21 @@ with no elements.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/clear.hpp>
 #include <boost/fusion/include/clear.hpp>
 
- + Example
assert(clear(make_vector(1,2,3)) == make_vector());
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
index afc24220..51e86b68 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

- + Synposis
template<
@@ -54,7 +54,7 @@
     Sequence const& seq, First const& it1, Last const& it2);
 
-

Table 1.67. Parameters

+

Table 1.73. Parameters

@@ -138,7 +138,7 @@

- + Expression Semantics
@@ -149,15 +149,15 @@

Semantics: Returns a new sequence, containing @@ -171,15 +171,15 @@

Semantics: Returns a new sequence, with @@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/erase.hpp>
 #include <boost/fusion/include/erase.hpp>
 
- + Example
const vector<int, double, char> vec(1, 2.0, 'c');
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
index 230ee63a..feaa03c9 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -39,7 +39,7 @@ key.

- + Synposis
template<
@@ -49,7 +49,7 @@
 typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
 
-

Table 1.68. Parameters

+

Table 1.74. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/erase_key.hpp>
 #include <boost/fusion/include/erase_key.hpp>
 
- + Example
assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
index 0080ec95..72dcccf5 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ the elements of a specified type.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
 
-

Table 1.57. Parameters

+

Table 1.63. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -120,15 +120,15 @@

Semantics: Returns a sequence containing @@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/filter.hpp>
 #include <boost/fusion/include/filter.hpp>
 
- + Example
const vector<int,int,long,long> vec(1,2,3,4);
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
index 4981ee5f..41277071 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
 
-

Table 1.58. Parameters

+

Table 1.64. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -122,15 +122,15 @@

Semantics: Returns a sequence containing @@ -140,21 +140,21 @@ is the same as in the original sequence.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/filter_if.hpp>
 #include <boost/fusion/include/filter_if.hpp>
 
- + Example
const vector<int,int,double,double> vec(1,2,3.0,4.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
index 4e8fafe8..9f7bcaed 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.69. Parameters

+

Table 1.75. Parameters

@@ -129,7 +129,7 @@

- + Expression Semantics
@@ -140,15 +140,15 @@

Semantics: Returns a new sequence, containing @@ -158,21 +158,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/fusion/include/insert.hpp>
 
- + Example
const vector<int,int> vec(1,2);
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
index 4639b782..9c88b89a 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, Pos const& pos, Range const& range);
 
-

Table 1.70. Parameters

+

Table 1.76. Parameters

@@ -130,7 +130,7 @@

- + Expression Semantics
@@ -141,15 +141,15 @@

Semantics: Returns a new sequence, containing @@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/insert_range.hpp>
 #include <boost/fusion/include/insert_range.hpp>
 
- + Example
const vector<int,int> vec(1,2);
diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
index 7886f09b..db1c3104 100644
--- a/doc/html/fusion/algorithm/transformation/functions/join.html
+++ b/doc/html/fusion/algorithm/transformation/functions/join.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ first followed by the elements of the second.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
 
-

Table 1.71. Parameters

+

Table 1.77. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -120,16 +120,16 @@

Semantics: Returns a sequence containing @@ -138,21 +138,21 @@ The order of the elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/join.hpp>
 #include <boost/fusion/include/join.hpp>
 
- + Example
vector<int,char> v1(1, 'a');
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
index f7211fcc..9b63f157 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns a new sequence, with the last element of the original removed.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
 
-

Table 1.73. Parameters

+

Table 1.79. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -99,15 +99,15 @@

Semantics: Returns a new sequence containing @@ -116,21 +116,21 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/pop_back.hpp>
 #include <boost/fusion/include/pop_back.hpp>
 
- + Example
assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
index 48724ab1..67c487d4 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns a new sequence, with the first element of the original removed.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
 
-

Table 1.74. Parameters

+

Table 1.80. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -99,15 +99,15 @@

Semantics: Returns a new sequence containing @@ -116,21 +116,21 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/pop_front.hpp>
 #include <boost/fusion/include/pop_front.hpp>
 
- + Example
assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
index b0c6ac5d..e9675a4e 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns a new sequence with an element added at the end.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.75. Parameters

+

Table 1.81. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -120,15 +120,15 @@

Semantics: Returns a new sequence, containing @@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/push_back.hpp>
 #include <boost/fusion/include/push_back.hpp>
 
- + Example
assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
index c7b48845..34ac02cf 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns a new sequence with an element added at the beginning.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.76. Parameters

+

Table 1.82. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -120,15 +120,15 @@

Semantics: Returns a new sequence, containing @@ -138,21 +138,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/push_front.hpp>
 #include <boost/fusion/include/push_front.hpp>
 
- + Example
assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
index 016f1e3c..ebd6a967 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ except those of a given type.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
 
-

Table 1.63. Parameters

+

Table 1.69. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -120,15 +120,15 @@

Semantics: Returns a new sequence, containing @@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/include/remove.hpp>
 
- + Example
const vector<int,double> vec(1,2.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
index 9f1d1f7c..4b0aab99 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
 
-

Table 1.64. Parameters

+

Table 1.70. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -121,15 +121,15 @@

Semantics: Returns a new sequence, containing @@ -139,21 +139,21 @@ >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/remove_if.hpp>
 #include <boost/fusion/include/remove_if.hpp>
 
- + Example
const vector<int,double> vec(1,2.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
index 3f5e3e60..6457ecf4 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ a new value.

- + Synopsis
template<
@@ -46,7 +46,7 @@
     Sequence const& seq, T const& old_value, T const& new_value);
 
-

Table 1.61. Parameters

+

Table 1.67. Parameters

@@ -132,7 +132,7 @@

- + Expression Semantics
@@ -149,21 +149,21 @@ to elements with the same type and equal to old_value.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/replace.hpp>
 #include <boost/fusion/include/replace.hpp>
 
- + Example
assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
index 96993b23..dd6001ee 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ replaced with a new value.

- + Synopsis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, F f, T const& new_value);
 
-

Table 1.62. Parameters

+

Table 1.68. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -149,21 +149,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/replace_if.hpp>
 #include <boost/fusion/include/replace_if.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
index d2cc0849..14a2d199 100644
--- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns a new sequence with the elements of the original in reverse order.

- + Synposis
template<
@@ -43,7 +43,7 @@
 typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
 
-

Table 1.65. Parameters

+

Table 1.71. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -99,20 +99,20 @@

Semantics: Returns a new sequence containing @@ -120,21 +120,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/reverse.hpp>
 #include <boost/fusion/include/reverse.hpp>
 
- + Example
assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
index d95ec096..9ed51b99 100644
--- a/doc/html/fusion/algorithm/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ of seq.

- + Unary version synopsis
@@ -50,7 +50,7 @@ Sequence const& seq, F f);
-

Table 1.59. Parameters

+

Table 1.65. Parameters

@@ -118,7 +118,7 @@

- + Expression Semantics
@@ -134,7 +134,7 @@ within seq.

- + Binary version synopsis
@@ -147,7 +147,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.60. Parameters

+

Table 1.66. Parameters

@@ -244,21 +244,21 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- + Example
struct triple
diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
index bd03f5b8..30b1bbe6 100644
--- a/doc/html/fusion/algorithm/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
zip
- + Description

@@ -35,7 +35,7 @@ of the members of the component sequences.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
 
-

Table 1.72. Parameters

+

Table 1.78. Parameters

@@ -93,7 +93,7 @@

- + Expression Semantics
@@ -114,21 +114,21 @@ 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/zip.hpp>
 #include <boost/fusion/include/zip.hpp>
 
- + Example
vector<int,char> v1(1, 'a');
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html
index bb379566..4cd4428a 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html index 263a5f8c..536a1c04 100644 --- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.86. Parameters

+

Table 1.92. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/clear.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
index 8a615b63..4a8cf79f 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -31,11 +31,11 @@ and range delimiting iterator types.

- + Description
- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.87. Parameters

+

Table 1.93. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -142,15 +142,15 @@

Semantics: Returns a new sequence with @@ -168,14 +168,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/erase.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
index b7a8994a..29cf0576 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ and key types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.88. Parameters

+

Table 1.94. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/erase_key.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
index fcfb61d3..5a7f46ef 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ and type to retain.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.77. Parameter

+

Table 1.83. Parameter

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -123,15 +123,15 @@

Semantics: Returns a sequence containing @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/filter.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
index 56ada1c7..0b370c24 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ Lambda Expression predicate type.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.78. Parameter

+

Table 1.84. Parameter

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -125,15 +125,15 @@

Semantics: Returns a sequence containing @@ -142,14 +142,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/filter_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
index cc8eb3c2..cb32c418 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ position iterator and insertion types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.89. Parameters

+

Table 1.95. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -142,15 +142,15 @@

Semantics: Returns a sequence with an @@ -159,14 +159,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/insert.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
index 527331b6..3ea03e80 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.90. Parameters

+

Table 1.96. Parameters

@@ -132,7 +132,7 @@

- + Expression Semantics
@@ -143,15 +143,15 @@

Semantics: Returns a sequence with the @@ -160,14 +160,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/insert_range.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
index 89df764c..17b8677b 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result of joining 2 sequences, given the sequence types.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -58,16 +58,16 @@

Semantics: Returns a sequence containing @@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/join.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
index 714754c4..2d0f615b 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.91. Parameters

+

Table 1.97. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -103,15 +103,15 @@

Semantics: Returns a sequence with all @@ -119,14 +119,14 @@ except the last element.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/pop_back.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
index 557190be..c3c6f92b 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.92. Parameters

+

Table 1.98. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -103,15 +103,15 @@

Semantics: Returns a sequence with all @@ -119,14 +119,14 @@ except the first element.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/pop_front.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
index ae176f0c..4b1da24e 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ the input sequence and element to push.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.93. Parameters

+

Table 1.99. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -123,15 +123,15 @@

Semantics: Returns a sequence with the @@ -140,14 +140,14 @@ added to the end.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/push_back.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
index 4e451464..5532c437 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ of the input sequence and element to push.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.94. Parameters

+

Table 1.100. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -123,15 +123,15 @@

Semantics: Returns a sequence with the @@ -140,14 +140,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/push_front.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
index b7cf546e..6ffbff29 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ removal types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.83. Parameters

+

Table 1.89. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -123,15 +123,15 @@

Semantics: Returns a sequence containing @@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/remove.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
index a83ff493..abde89d6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ Lambda Expression predicate types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.84. Parameters

+

Table 1.90. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -125,15 +125,15 @@

Semantics: Returns a sequence containing @@ -142,14 +142,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/remove_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
index 128c66af..edd0f07d 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ the input sequence and element to replace.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.81. Parameters

+

Table 1.87. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ replace.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/replace.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
index a973a0e9..b123c42a 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ Function Object predicate and replacement object.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.82. Parameters

+

Table 1.88. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -146,14 +146,14 @@ replace_if.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/replace_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
index f89e13cd..df2815c6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.85. Parameters

+

Table 1.91. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -103,34 +103,34 @@

Semantics: Returns a sequence with the elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/reverse.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
index b3f3b27a..0c91762a 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ of seq.

- + Unary version synopsis
@@ -50,7 +50,7 @@ Sequence const& seq, F f);
-

Table 1.79. Parameters

+

Table 1.85. Parameters

@@ -118,7 +118,7 @@

- + Expression Semantics
@@ -129,15 +129,15 @@

Semantics: Returns a new sequence, containing @@ -145,7 +145,7 @@ within seq.

- + Binary version synopsis
@@ -158,7 +158,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.80. Parameters

+

Table 1.86. Parameters

@@ -255,21 +255,21 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- + Example
struct triple
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
index 2c7742d7..a6be7da6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
zip
- + Description

@@ -35,7 +35,7 @@ of the members of the component sequences.

- + Synopsis
template<
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -72,14 +72,14 @@ 'c'))

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/zip.hpp>
diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
index f550c7d1..0eca28df 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -31,59 +31,63 @@

diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html index dd511152..28a1aff5 100644 --- a/doc/html/fusion/container.html +++ b/doc/html/fusion/container.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -49,7 +49,7 @@ These containers are more or less counterparts of those in STL.

- + Header

#include <boost/fusion/container.hpp>
diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
index 59e055ce..0710dc14 100644
--- a/doc/html/fusion/container/cons.html
+++ b/doc/html/fusion/container/cons.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -42,21 +42,21 @@ Inlined Functions).

- + Header
#include <boost/fusion/container/list/cons.hpp>
 #include <boost/fusion/include/cons.hpp>
 
- + Synopsis
template <typename Car, typename Cdr = nil>
 struct cons;
 
- + Template parameters
@@ -119,11 +119,13 @@
- + Model of
- -
+ +

Notation

nil
@@ -159,7 +161,7 @@
- + Expression Semantics

@@ -292,7 +294,7 @@

- + Example
cons<int, cons<float> > l(12, cons<float>(5.5f));
diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
index 78ad6ff5..971c64bd 100644
--- a/doc/html/fusion/container/conversion.html
+++ b/doc/html/fusion/container/conversion.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -35,7 +35,7 @@ types using one of these conversion functions.

- + Header
#include <boost/fusion/include/convert.hpp>
diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html
index cba92405..70174779 100644
--- a/doc/html/fusion/container/conversion/functions.html
+++ b/doc/html/fusion/container/conversion/functions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html index 6bfadce9..9c367d87 100644 --- a/doc/html/fusion/container/conversion/functions/as_list.html +++ b/doc/html/fusion/container/conversion/functions/as_list.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Convert a fusion sequence to a list.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ seq, to a list.

- + Header
#include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
as_list(make_vector('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
index a8710ba4..cf04a5fb 100644
--- a/doc/html/fusion/container/conversion/functions/as_map.html
+++ b/doc/html/fusion/container/conversion/functions/as_map.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Convert a fusion sequence to a map.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

- + Header
#include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
as_map(make_vector(
diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
index d8d1f03a..06247ab1 100644
--- a/doc/html/fusion/container/conversion/functions/as_set.html
+++ b/doc/html/fusion/container/conversion/functions/as_set.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Convert a fusion sequence to a set.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ key types.

- + Header
#include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
as_set(make_vector('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
index 51c126d3..e2102f69 100644
--- a/doc/html/fusion/container/conversion/functions/as_vector.html
+++ b/doc/html/fusion/container/conversion/functions/as_vector.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ seq, to a vector.

- + Header
#include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
as_vector(make_list('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html
index bdfbebe3..978b38d7 100644
--- a/doc/html/fusion/container/conversion/metafunctions.html
+++ b/doc/html/fusion/container/conversion/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html index f9d88686..f1b288d3 100644 --- a/doc/html/fusion/container/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html @@ -22,26 +22,26 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of as_list.

- + Synopsis
template <typename Sequence>
 struct as_list;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ Sequence, to a list.

- + Header
#include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
result_of::as_list<vector<char, int> >::type
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
index 78cea414..289abbce 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
@@ -22,26 +22,26 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of as_map.

- + Synopsis
template <typename Sequence>
 struct as_map;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

- + Header
#include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
result_of::as_map<vector<
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
index ef914029..1bfa7cbc 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
@@ -22,26 +22,26 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of as_set.

- + Synopsis
template <typename Sequence>
 struct as_set;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ key types.

- + Header
#include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
result_of::as_set<vector<char, int> >::type
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
index 80ed6e5d..f8fc2a09 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
@@ -22,26 +22,26 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of as_vector.

- + Synopsis
template <typename Sequence>
 struct as_vector;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ Sequence, to a vector.

- + Header
#include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
result_of::as_vector<list<char, int> >::type
diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
index e744c47d..f1d6aeee 100644
--- a/doc/html/fusion/container/generation.html
+++ b/doc/html/fusion/container/generation.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -34,7 +34,7 @@ These are the functions that you can use to generate various forms of Container from elemental values.

- + Header
#include <boost/fusion/container/generation.hpp>
diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
index 2c1861cc..2ae8be84 100644
--- a/doc/html/fusion/container/generation/functions.html
+++ b/doc/html/fusion/container/generation/functions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html index fee927fe..7f3d7340 100644 --- a/doc/html/fusion/container/generation/functions/list_tie.html +++ b/doc/html/fusion/container/generation/functions/list_tie.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Constructs a tie using a list sequence.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
int i = 123;
diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
index e7bd87b0..af5277d5 100644
--- a/doc/html/fusion/container/generation/functions/make_cons.html
+++ b/doc/html/fusion/container/generation/functions/make_cons.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ and optional cdr (tail).

- + Synopsis
template <typename Car>
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -127,20 +127,20 @@ (tail).

- + Header
#include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 8f429518..fd5bc1c4 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index b850a1bc..70549940 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ from one or more key/data pairs.

- + Synopsis
template <
@@ -55,7 +55,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -123,7 +123,7 @@
- + Expression Semantics
@@ -143,20 +143,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
make_map<int, double>('X', "Men")
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index 84f5b244..35e8e6fc 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -117,20 +117,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
make_set(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index 67ce0c5a..f53690d8 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/include/make_vector.hpp>
 
- + Example
make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 5d790309..65872a2d 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Constructs a tie using a map sequence.

- + Synopsis
template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -121,7 +121,7 @@
- + Expression Semantics
@@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

- + Header
#include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
struct int_key;
diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
index 474ebeef..724b062e 100644
--- a/doc/html/fusion/container/generation/functions/tiers.html
+++ b/doc/html/fusion/container/generation/functions/tiers.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -33,9 +33,15 @@ flavors.

Example: @@ -48,9 +54,7 @@ The vector_tie function creates a vector of type vector<int&, char&, double&>. The same result could be achieved - with the call make_vector(ref(i), ref(c), ref(a)) - [9] - . + with the call make_vector(ref(i), ref(c), ref(a)) [9].

A tie can be used to 'unpack' another tuple into @@ -66,7 +70,7 @@ when calling functions which return sequences.

- + Ignore

@@ -80,10 +84,10 @@



-

[9] - see Boost.Ref - for details about ref -

+

[9] + see Boost.Ref + for details about ref +

diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index de0afd4d..b259e980 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
int i = 123;
diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
index c132393e..2746b1d4 100644
--- a/doc/html/fusion/container/generation/metafunctions.html
+++ b/doc/html/fusion/container/generation/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html index afa3a30c..bb0e823d 100644 --- a/doc/html/fusion/container/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of list_tie.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
result_of::list_tie<int, double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
index e9f56164..a6e61882 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
@@ -22,26 +22,26 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_cons.

- + Synopsis
template <typename Car, typename Cdr = nil>
 struct make_cons;
 
- + Parameters
@@ -105,7 +105,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ (tail).

- + Header
#include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
result_of::make_cons<char, result_of::make_cons<int>::type>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
index 6ce29e99..bb967fb4 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_list.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
result_of::make_list<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
index 5c541b01..773ad3c2 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_map.

- + Synopsis
template <
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -121,7 +121,7 @@
- + Expression Semantics
@@ -140,20 +140,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
result_of::make_map<int, double, char, double>::type
 
- + See also
diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 7f13a781..848e6858 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_set.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -117,14 +117,14 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
result_of::make_set<int, char, double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
index 566422ff..c17ae4be 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_vector.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
result_of::make_vector<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
index b6d7bef6..72675c76 100644
--- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of map_tie.

- + Synopsis
template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -119,7 +119,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

- + Header
#include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
struct int_key;
diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
index 947f2949..b39ebce2 100644
--- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of vector_tie.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
result_of::vector_tie<int, double>::type
diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
index c6d8b05c..e9e6d381 100644
--- a/doc/html/fusion/container/list.html
+++ b/doc/html/fusion/container/list.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

- + Header
#include <boost/fusion/container/list.hpp>
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/list_fwd.hpp>
 
- + Synopsis
template <
@@ -75,7 +75,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Template parameters
@@ -120,11 +120,13 @@
- + Model of
- -
+ +

Notation

L
@@ -152,7 +154,7 @@
- + Expression Semantics

@@ -259,7 +261,7 @@

- + Example
list<int, float> l(12, 5.5f);
diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
index 40a4ccf8..ab4fea6a 100644
--- a/doc/html/fusion/container/map.html
+++ b/doc/html/fusion/container/map.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+

map

- + Description

@@ -40,16 +40,16 @@ (see Overloaded Functions).

- + Header
#include <boost/fusion/container/map.hpp>
 #include <boost/fusion/include/map.hpp>
-#include <boost/fusion/container/map_fwd.hpp>
+#include <boost/fusion/container/map/map_fwd.hpp>
 #include <boost/fusion/include/map_fwd.hpp>
 
- + Synopsis
template <
@@ -77,7 +77,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Template parameters
@@ -122,15 +122,19 @@
- + Model of
-
+

Notation

M
@@ -153,7 +157,7 @@
- + Expression Semantics

@@ -237,7 +241,7 @@

- + Example
typedef map<
diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
index 1b09487f..beb53c22 100644
--- a/doc/html/fusion/container/set.html
+++ b/doc/html/fusion/container/set.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+

set

- + Description

@@ -39,16 +39,16 @@ Functions).

- + Header
#include <boost/fusion/container/set.hpp>
 #include <boost/fusion/include/set.hpp>
-#include <boost/fusion/container/set_fwd.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
 #include <boost/fusion/include/set_fwd.hpp>
 
- + Synopsis
template <
@@ -76,7 +76,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -121,15 +121,19 @@
- + Model of
-
+

Notation

S
@@ -152,7 +156,7 @@
- + Expression Semantics

@@ -236,7 +240,7 @@

- + Example
typedef set<int, float> S;
diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
index df18a6fc..d4ff258e 100644
--- a/doc/html/fusion/container/vector.html
+++ b/doc/html/fusion/container/vector.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -39,7 +39,7 @@ efficient.

- + Header
#include <boost/fusion/container/vector.hpp>
@@ -60,7 +60,7 @@
 #include <boost/fusion/include/vector50.hpp>
 
- + Synopsis

@@ -115,7 +115,7 @@

#define FUSION_MAX_VECTOR_SIZE 20
 
- + Template parameters
@@ -160,12 +160,14 @@
- + Model of
- -
+ +

Notation

v
@@ -188,7 +190,7 @@
- + Expression Semantics

@@ -271,7 +273,7 @@

- + Example
vector<int, float> v(12, 5.5f);
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index fb3b4cbf..b769a978 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html index c4fdf23c..a4e20021 100644 --- a/doc/html/fusion/extension/ext_full.html +++ b/doc/html/fusion/extension/ext_full.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -37,19 +37,20 @@

  1. - Enable the tag dispatching - mechanism used by Fusion for your sequence type -
  2. + Enable the tag + dispatching mechanism used by Fusion for your sequence + type +
  3. - Design an iterator type for the sequence -
  4. + Design an iterator type for the sequence +
  5. - Provide specialized behaviour for the intrinsic operations of the new Fusion - sequence -
  6. + Provide specialized behaviour for the intrinsic operations of the new + Fusion sequence +
- + Our example

@@ -79,7 +80,7 @@ Start guide.

- + Enabling Tag Dispatching
@@ -120,7 +121,7 @@ #include <boost/fusion/include/tag_of.hpp>
- + Designing a suitable iterator
@@ -154,23 +155,23 @@

  1. - The iterator is parameterized by the type it is iterating over, and the - index of the current element. -
  2. + The iterator is parameterized by the type it is iterating over, and the + index of the current element. +
  3. - The typedefs struct_type - and index provide convenient - access to information we will need later in the implementation. -
  4. + The typedefs struct_type + and index provide convenient + access to information we will need later in the implementation. +
  5. - The typedef category allows - the traits::category_of - metafunction to establish the traversal category of the iterator. -
  6. + The typedef category + allows the traits::category_of + metafunction to establish the traversal category of the iterator. +
  7. - The constructor stores a reference to the example_struct - being iterated over. -
  8. + The constructor stores a reference to the example_struct + being iterated over. +

We also need to enable tag @@ -182,7 +183,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features
@@ -308,7 +309,7 @@ sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

-
+
@@ -322,7 +323,7 @@

[Note] Note
- + Implementing the remaining iterator functionality
@@ -373,7 +374,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence
@@ -429,7 +430,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative sequence
@@ -493,7 +494,7 @@ are provided in the example code.

- + Summary

diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 9962539b..639d9b13 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -22,12 +22,12 @@

PrevUpHomeNext
-
+
- + Description

@@ -36,14 +36,14 @@ iterator.

- + Synopsis
template<typename Derived, typename TravesalTag>
 struct iterator_facade;
 
- + Usage

@@ -57,7 +57,7 @@ type.

-

Table 1.97. Parameters

+

Table 1.103. Parameters

@@ -106,7 +106,7 @@

-

Table 1.98. Key Expressions

+

Table 1.104. Key Expressions

@@ -439,14 +439,14 @@

- + Header
#include <boost/fusion/iterator/iterator_facade.hpp>
 #include <boost/fusion/include/iterator_facade.hpp>
 
- + Example

diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index a2f7e666..ba420937 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -22,12 +22,12 @@

PrevUpHomeNext
-
+
- + Description

@@ -36,14 +36,14 @@ iterator.

- + Synopsis
template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
 struct sequence_facade;
 
- + Usage

@@ -59,7 +59,7 @@ type.

-

Table 1.95. Parameters

+

Table 1.101. Parameters

@@ -107,7 +107,7 @@

-

Table 1.96. Key Expressions

+

Table 1.102. Key Expressions

@@ -244,14 +244,14 @@

- + Include
#include <boost/fusion/sequence/sequence_facade.hpp>
 #include <boost/fusion/include/sequence_facade.hpp>
 
- + Example

diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 881c40b7..818e8151 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+
@@ -63,13 +63,13 @@ through a function object interface.

- + Header

#include <boost/fusion/functional.hpp>
 

- + Fused and unfused forms

@@ -103,7 +103,7 @@ form of f'.

- + Calling functions and function objects

@@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Making Fusion code callable through a function object interface

diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index e62dfd4b..a299c6d0 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 343fefaf..b5b4b2d0 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -54,20 +54,20 @@ and boost::shared_ptr).

- + Header
#include <boost/fusion/functional/adapter/fused.hpp>
 
- + Synopsis
template <typename Function>
 class fused;
 
- + Template parameters
@@ -113,16 +113,20 @@
- + Model of
-
+

Notation

R
@@ -146,7 +150,7 @@
- + Expression Semantics
@@ -211,22 +215,32 @@
- + Example
fused< std::plus<long> > f;
 assert(f(make_vector(1,2l)) == 3l);
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index a9368476..079dcced 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -44,20 +44,20 @@ object is held by value, the adapter is const).

- + Header
#include <boost/fusion/functional/adapter/fused_function_object.hpp>
 
- + Synopsis
template <class Function>
 class fused_function_object;
 
- + Template parameters
@@ -103,17 +103,21 @@
- + Model of
-
+

Notation

R
@@ -137,7 +141,7 @@
- + Expression Semantics
@@ -202,7 +206,7 @@
- + Example
template<class SeqOfSeqs, class Func>
@@ -239,16 +243,26 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index e516c166..f47958a2 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -62,20 +62,20 @@ case is not implemented).

- + Header
#include <boost/fusion/functional/adapter/fused_procedure.hpp>
 
- + Synopsis
template <typename Function>
 class fused_procedure;
 
- + Template parameters
@@ -121,17 +121,21 @@
- + Model of
-
+

Notation

R
@@ -155,7 +159,7 @@
- + Expression Semantics
@@ -220,7 +224,7 @@
- + Example
template<class SequenceOfSequences, class Func>
@@ -240,15 +244,23 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index 9831ebab..3d7b36d6 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -22,18 +22,18 @@
PrevUpHomeNext
-
+
- + Header
#include <boost/fusion/functional/adapter/limits.hpp>
 
- + Macros

@@ -43,11 +43,11 @@

  • - BOOST_FUSION_UNFUSED_MAX_ARITY -
  • + BOOST_FUSION_UNFUSED_MAX_ARITY +
  • - BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY -
  • + BOOST_FUSION_UNFUSED_TYPE_MAX_ARITY +
diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 5f03f026..5a9e757c 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -57,20 +57,20 @@ object is held by value, the adapter is const.

- + Header
#include <boost/fusion/functional/adapter/unfused.hpp>
 
- + Synopsis
template <class Function, bool AllowNullary = true>
 class unfused;
 
- + Template parameters
@@ -135,16 +135,20 @@
- + Model of
-
+

Notation

F
@@ -172,7 +176,7 @@
- + Expression Semantics
@@ -237,7 +241,7 @@
- + Example
struct fused_incrementer
@@ -264,12 +268,16 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index ca408c4a..af4b3961 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -66,20 +66,20 @@

- + Header
#include <boost/fusion/functional/adapter/unfused_typed.hpp>
 
- + Synopsis
template <class Function, class Sequence>
 class unfused_typed;
 
- + Template parameters
@@ -143,17 +143,21 @@
- + Model of
-
+

Notation

F
@@ -186,7 +190,7 @@
- + Expression Semantics
@@ -253,7 +257,7 @@
- + Example
struct add_assign // applies operator+=
@@ -321,13 +325,19 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index c1eeed42..1f787792 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 87db5c48..01b7eaeb 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -36,22 +36,22 @@ of a function call operator.

- + Models
  • - function pointer types -
  • + function pointer types +
  • - member (function or data) pointer types -
  • + member (function or data) pointer types +
  • - all kinds of function objects -
  • + all kinds of function objects +
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
index 93e05750..a801f71b 100644
--- a/doc/html/fusion/functional/concepts/def_callable.html
+++ b/doc/html/fusion/functional/concepts/def_callable.html
@@ -22,13 +22,13 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,11 +37,13 @@ to determine the result of a call.

- + Refinement of
- + -
+

Notation

F
@@ -77,7 +79,7 @@
- + Expression requirements
@@ -115,20 +117,20 @@
- + Models
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
index c6e7f372..40a69934 100644
--- a/doc/html/fusion/functional/concepts/poly.html
+++ b/doc/html/fusion/functional/concepts/poly.html
@@ -22,13 +22,13 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,17 +36,21 @@ Callable Object type.

- + Refinement of
-
+

Notation

F
@@ -75,7 +79,7 @@
- + Expression requirements
@@ -124,22 +128,22 @@
- + Models
  • - function pointers -
  • + function pointers +
  • - function objects of the Standard Library -
  • + function objects of the Standard Library +
  • - all Fusion functional adapters -
  • + all Fusion functional adapters +
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
index 2a805548..6ebcf9f6 100644
--- a/doc/html/fusion/functional/concepts/reg_callable.html
+++ b/doc/html/fusion/functional/concepts/reg_callable.html
@@ -22,13 +22,13 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,12 +37,14 @@ can appear immediately to the left of a function call operator.

- + Refinement of
- -
+ +

Notation

F
@@ -65,7 +67,7 @@
- + Expression requirements
@@ -112,19 +114,19 @@
- + Models
  • - function pointer types -
  • + function pointer types +
  • - all kinds of function objects -
  • + all kinds of function objects +
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html
index 563f1d06..7eb36bd1 100644
--- a/doc/html/fusion/functional/generation.html
+++ b/doc/html/fusion/functional/generation.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 4ca2dcd2..343044c8 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index da8e441d..6a849754 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -45,7 +45,7 @@
 make_fused(F const & f);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

- + Header
#include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/include/make_fused.hpp>
 
- + Example
float sub(float a, float b) { return a - b; }
@@ -126,14 +126,20 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html index ac8fe2ee..dedcbf46 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_fused_function_object(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ for f.

- + Header
#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Example
struct sub
@@ -141,14 +141,20 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html index 5afa51b0..9a63ec60 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ conversion applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_fused_procedure(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ f.

- + Header
#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Example
vector<int,int,int> v(1,2,3);
@@ -122,14 +122,20 @@
 assert(front(v) == 0);
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index 428884a4..236dd164 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_unfused(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

- + Header
#include <boost/fusion/functional/generation/make_unfused.hpp>
 #include <boost/fusion/include/make_unfused.hpp>
 
- + Example
struct fused_incrementer
@@ -138,14 +138,20 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 63bd4e52..89e62b8a 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 48b7c0cc..91461d55 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -22,27 +22,27 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_fused.

- + Header
#include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/include/make_fused.hpp>
 
- + Synopsis
namespace result_of
@@ -55,11 +55,13 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html index 1c7bc1aa..6f246a41 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -22,27 +22,27 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_fused_function_object.

- + Header
#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Synopsis
namespace result_of
@@ -55,11 +55,13 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html index 5f596268..fa197e53 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -22,27 +22,27 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_fused_procedure.

- + Header
#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Synopsis
namespace result_of
@@ -55,11 +55,13 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index f404fa0b..5fb2a50a 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -22,27 +22,27 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of make_unfused.

- + Header
#include <boost/fusion/functional/generation/make_unfused.hpp>
 #include <boost/fusion/include/make_unfused.hpp>
 
- + Synopsis
namespace result_of
@@ -55,11 +55,13 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 02dae5c3..a298c656 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 8868e636..70a1116f 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 147ca1b4..c318a3a9 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Synopsis
template<
@@ -67,7 +67,7 @@
 invoke(Function f, Sequence const & s);
 
- + Parameters
@@ -133,7 +133,7 @@
- + Expression Semantics
@@ -149,29 +149,39 @@ as arguments and returns the result of the call expression.

- + Header
#include <boost/fusion/functional/invocation/invoke.hpp>
 
- + Example
std::plus<int> add;
 assert(invoke(add,make_vector(1,1)) == 2);
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index f6c749b8..2a91e6e4 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Synopsis
template<
@@ -61,7 +61,7 @@
 invoke_function_object(Function f, Sequence const & s);
 
- + Parameters
@@ -127,7 +127,7 @@
- + Expression Semantics
@@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

- + Header
#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
 
- + Example
struct sub
@@ -175,16 +175,26 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html index 0230f3ce..53683ee3 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -52,7 +52,7 @@ isn't implemented).

- + Synopsis
template<
@@ -70,7 +70,7 @@
 invoke_procedure(Function f, Sequence const & s);
 
- + Parameters
@@ -136,7 +136,7 @@
- + Expression Semantics
@@ -151,13 +151,13 @@ as arguments.

- + Header
#include <booost/fusion/functional/invocation/invoke_procedure.hpp>
 
- + Example
vector<int,int> v(1,2);
@@ -166,16 +166,26 @@
 assert(front(v) == 3);
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 08dbe5be..f3401de4 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -22,18 +22,18 @@
PrevUpHomeNext
-
+
- + Header
#include <boost/fusion/functional/invocation/limits.hpp>
 
- + Macros

@@ -42,14 +42,14 @@

  • - BOOST_FUSION_INVOKE_MAX_ARITY -
  • + BOOST_FUSION_INVOKE_MAX_ARITY +
  • - BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY -
  • + BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY +
  • - BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY -
  • + BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY +
diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 2467e1b6..a52dcf91 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 94db530f..97b35100 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of invoke.

- + Synopsis
namespace result_of
@@ -50,13 +50,17 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html index 0ac08c06..ed6346ad 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -22,20 +22,20 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html index 7e954db2..f647ecde 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -22,20 +22,20 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of invoke_procedure.

- + Synopsis
namespace result_of
@@ -51,13 +51,17 @@
 }
 
- + See also
diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 6b680eb1..33ba14ec 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -116,10 +116,8 @@ sequences and MPL sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you - wish to work solely on types - [1] - . In MPL, Fusion - sequences follow MPL's + wish to work solely on types [1]. In MPL, + Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence type. e.g. transforming a vector returns a vector). You can also convert from an MPL sequence @@ -132,12 +130,12 @@



-

[1] - Choose MPL - over fusion when doing pure type calculations. Once the static type calculation - is finished, you can instantiate a fusion sequence (see Conversion) - for the runtime part. -

+

[1] + Choose MPL + over fusion when doing pure type calculations. Once the static type calculation + is finished, you can instantiate a fusion sequence (see Conversion) + for the runtime part. +

diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 4d26d92b..5001eea9 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -81,7 +81,7 @@ Sequence.

- + Header

#include <boost/fusion/iterator.hpp>
diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
index b4b03309..a035be85 100644
--- a/doc/html/fusion/iterator/concepts.html
+++ b/doc/html/fusion/iterator/concepts.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html index 33252858..37456418 100644 --- a/doc/html/fusion/iterator/concepts/associative_iterator.html +++ b/doc/html/fusion/iterator/concepts/associative_iterator.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ of the element of an associative forward, bidirectional or random access sequence.

-
+

Notation

i
@@ -50,7 +50,7 @@
- + Refinement of
@@ -61,7 +61,7 @@ Access Iterator

- + Expression requirements
@@ -113,7 +113,7 @@
- + Meta Expressions
@@ -174,41 +174,41 @@
- + Models
diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 9bac55c3..7bdc76a3 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -22,20 +22,20 @@
PrevUpHomeNext
-
+
- + Description

A Bidirectional Iterator traverses a Sequence allowing movement in either direction one element at a time.

-
+

Notation

i
@@ -58,7 +58,7 @@
- + Refinement of
@@ -66,7 +66,7 @@ Forward Iterator

- + Expression requirements
@@ -173,7 +173,7 @@
- + Meta Expressions
@@ -208,7 +208,7 @@
- + Expression Semantics
@@ -248,7 +248,7 @@
- + Invariants

@@ -256,41 +256,48 @@ Iterator, the following invariants always hold:

- + Models
diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index 2af24fa5..1046585f 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ allowing movement in only one direction through it's elements, one element at a time.

-
+

Notation

i, j
@@ -59,7 +59,7 @@
- + Expression requirements
@@ -237,7 +237,7 @@
- + Meta Expressions
@@ -348,7 +348,7 @@
- + Expression Semantics
@@ -474,86 +474,93 @@
- + Invariants

The following invariants always hold:

    -
  • !(i - == j) == (i != j)
  • -
  • next(i) == advance_c<1>(i)
  • -
  • distance(i, advance_c<N>(i)) == N
  • - Using next to traverse the - sequence will never return to a previously seen position -
  • + !(i + == j) == (i != j) +
  • -deref(i) is equivalent to *i -
  • + next(i) == advance_c<1>(i) +
  • - If i == - j then *i is equivalent to *j -
  • + distance(i, advance_c<N>(i)) == N + +
  • + Using next to traverse the + sequence will never return to a previously seen position +
  • +
  • + deref(i) + is equivalent to *i +
  • +
  • + If i == + j then *i is equivalent to *j +
- + Models
diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index afca75db..65e76dfc 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ moving in either direction, permitting efficient arbitrary distance movements back and forward through the sequence.

-
+

Notation

i, j
@@ -59,7 +59,7 @@
- + Refinement of
@@ -68,7 +68,7 @@ Iterator

- + Expression requirements
@@ -175,7 +175,7 @@
- + Meta Expressions
@@ -238,37 +238,37 @@
- + Models
diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 24ee01cd..931cb0ee 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index 89cb2f7b..5066415d 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::advance<I, M>::type advance(I const& i);
 
-

Table 1.6. Parameters

+

Table 1.6. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -128,14 +128,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
index b1ab20d6..ee54f294 100644
--- a/doc/html/fusion/iterator/functions/advance_c.html
+++ b/doc/html/fusion/iterator/functions/advance_c.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::advance_c<I, N>::type advance_c(I const& i);
 
-

Table 1.7. Parameters

+

Table 1.7. Parameters

@@ -108,7 +108,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
index 8d08053e..66a124c7 100644
--- a/doc/html/fusion/iterator/functions/deref.html
+++ b/doc/html/fusion/iterator/functions/deref.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Deferences an iterator.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::deref<I>::type deref(I const& i);
 
-

Table 1.2. Parameters

+

Table 1.2. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -102,14 +102,14 @@ i.

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
index e01163fa..ebefed36 100644
--- a/doc/html/fusion/iterator/functions/deref_data.html
+++ b/doc/html/fusion/iterator/functions/deref_data.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ an associative iterator.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::deref_data<I>::type deref(I const& i);
 
-

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

- + Header
#include <boost/fusion/iterator/deref_data.hpp>
 #include <boost/fusion/include/deref_data.hpp>
 
- + Example
typedef map<pair<float,int&> > map;
diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
index c4b65d06..0ba1e9f6 100644
--- a/doc/html/fusion/iterator/functions/distance.html
+++ b/doc/html/fusion/iterator/functions/distance.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the distance between 2 iterators.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::distance<I, J>::type distance(I const& i, J const& j);
 
-

Table 1.5. Parameters

+

Table 1.5. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ iterators i and j.

- + Header
#include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/include/distance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
index 6a7246a8..5c9a726b 100644
--- a/doc/html/fusion/iterator/functions/next.html
+++ b/doc/html/fusion/iterator/functions/next.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Moves an iterator 1 position forwards.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::next<I>::type next(I const& i);
 
-

Table 1.3. Parameters

+

Table 1.3. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ next element after i.

- + Header
#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/include/next.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
index 7d38aa4a..72e54a82 100644
--- a/doc/html/fusion/iterator/functions/prior.html
+++ b/doc/html/fusion/iterator/functions/prior.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Moves an iterator 1 position backwards.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::prior<I>::type prior(I const& i);
 
-

Table 1.4. Parameters

+

Table 1.4. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ element prior to i.

- + Header
#include <boost/fusion/iterator/prior.hpp>
 #include <boost/fusion/include/prior.hpp>
 
- + Example
typedef vector<int,int> vec;
diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html
index 197b5498..273c6087 100644
--- a/doc/html/fusion/iterator/metafunctions.html
+++ b/doc/html/fusion/iterator/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html index 239511bf..f86aed41 100644 --- a/doc/html/fusion/iterator/metafunctions/advance.html +++ b/doc/html/fusion/iterator/metafunctions/advance.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Moves an iterator a specified distance.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.18. Parameters

+

Table 1.18. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
index 362907ff..d6b4a24b 100644
--- a/doc/html/fusion/iterator/metafunctions/advance_c.html
+++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
index 0bc05592..d651a46e 100644
--- a/doc/html/fusion/iterator/metafunctions/deref.html
+++ b/doc/html/fusion/iterator/metafunctions/deref.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the type that will be returned by dereferencing an iterator.

- + Synposis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.13. Parameters

+

Table 1.13. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ an iterator of type I.

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
index eca6d101..bba1e4d9 100644
--- a/doc/html/fusion/iterator/metafunctions/deref_data.html
+++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ referenced by an associative iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

- + Header
#include <boosta/fusion/iterator/deref_data.hpp>
 #include <boost/fusion/include/deref_data.hpp>
 
- + Example
typedef map<pair<float,int> > map;
diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
index 8e2fa565..b796b5d8 100644
--- a/doc/html/fusion/iterator/metafunctions/distance.html
+++ b/doc/html/fusion/iterator/metafunctions/distance.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the distance between two iterators.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.17. Parameters

+

Table 1.17. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -108,14 +108,14 @@ J.

- + Header
#include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/include/distance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
index 44e9e8a4..0e3dc767 100644
--- a/doc/html/fusion/iterator/metafunctions/equal_to.html
+++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ and J are equal.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.16. Parameters

+

Table 1.16. Parameters

@@ -93,7 +93,7 @@

- + Expression Semantics
@@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/include/equal_to.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
index 2536f588..80d17c3e 100644
--- a/doc/html/fusion/iterator/metafunctions/key_of.html
+++ b/doc/html/fusion/iterator/metafunctions/key_of.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ iterator.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

- + Header
#include <boost/fusion/iterator/key_of.hpp>
 #include <boost/fusion/include/key_of.hpp>
 
- + Example
typedef map<pair<float,int> > vec;
diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
index aeaea9b2..f8b7089e 100644
--- a/doc/html/fusion/iterator/metafunctions/next.html
+++ b/doc/html/fusion/iterator/metafunctions/next.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the type of the next iterator in a sequence.

- + Synposis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.14. Parameters

+

Table 1.14. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ next element in the sequence after I.

- + Header
#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/include/next.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
index 4a9587fa..708ce55b 100644
--- a/doc/html/fusion/iterator/metafunctions/prior.html
+++ b/doc/html/fusion/iterator/metafunctions/prior.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the type of the previous iterator in a sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.15. Parameters

+

Table 1.15. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ previous element in the sequence before I.

- + Header
#include <boost/fusion/iterator/prior.hpp>
 #include <boost/fusion/include/prior.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
index e948f865..db7f67ca 100644
--- a/doc/html/fusion/iterator/metafunctions/value_of.html
+++ b/doc/html/fusion/iterator/metafunctions/value_of.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the type stored at the position of an iterator.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.12. Parameters

+

Table 1.12. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ a sequence at iterator position I.

- + Header
#include <boost/fusion/iterator/value_of.hpp>
 #include <boost/fusion/include/value_of.hpp>
 
- + Example
typedef vector<int,int&,const int&> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
index d86c95f7..5254457f 100644
--- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
+++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ by an associative iterator references.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -107,14 +107,14 @@ I.

- + Header
#include <boost/fusion/iterator/value_of_data.hpp>
 #include <boost/fusion/include/value_of_data.hpp>
 
- + Example
typedef map<pair<float,int> > vec;
diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html
index 7d3c9fff..72ece20b 100644
--- a/doc/html/fusion/iterator/operator.html
+++ b/doc/html/fusion/iterator/operator.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html index 042994bf..59668b78 100644 --- a/doc/html/fusion/iterator/operator/operator_equality.html +++ b/doc/html/fusion/iterator/operator/operator_equality.html @@ -22,20 +22,20 @@
PrevUpHomeNext
-
+
- + Description

Compares 2 iterators for equality.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,7 +104,7 @@ and j respectively.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
index 97929f38..5f264e59 100644
--- a/doc/html/fusion/iterator/operator/operator_inequality.html
+++ b/doc/html/fusion/iterator/operator/operator_inequality.html
@@ -22,20 +22,20 @@
 
PrevUpHomeNext
-
+
- + Description

Compares 2 iterators for inequality.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.11. Parameters

+

Table 1.11. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -102,7 +102,7 @@ and j respectively.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
index 03cb1699..03904564 100644
--- a/doc/html/fusion/iterator/operator/operator_unary_star.html
+++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
@@ -22,20 +22,20 @@
 
PrevUpHomeNext
-
+
- + Description

Dereferences an iterator.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::deref<I>::type operator*(unspecified<I> const& i);
 
-

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 0b4c4536..ce4a787e 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+

- + Recursive Inlined Functions

@@ -40,7 +40,7 @@ remains linear.

- + Overloaded Functions

@@ -50,7 +50,7 @@ given a key, k.

- + Tag Dispatching

@@ -59,14 +59,14 @@

  1. - A type for which an appropriate template specialization is required -
  2. + A type for which an appropriate template specialization is required +
  3. - A metafunction that associates the type with a tag type -
  4. + A metafunction that associates the type with a tag type +
  5. - A template that is specialized for the tag type -
  6. + A template that is specialized for the tag type +

For example, the fusion result_of::begin metafunction @@ -86,22 +86,22 @@

  1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl - is required -
  2. + Sequence is the type for + which a suitable implementation of result_of::begin_impl + is required +
  3. -traits::tag_of is the metafunction that associates - Sequence with an appropriate - tag -
  4. + traits::tag_of is the metafunction that associates + Sequence with an appropriate + tag +
  5. -result_of::begin_impl is the template which is specialized - to provide an implementation for each tag type -
  6. + result_of::begin_impl is the template which is specialized + to provide an implementation for each tag type +

- + Extensibility

@@ -136,7 +136,7 @@ it very cheap to pass around.

- + Element Conversion

@@ -157,9 +157,7 @@ Arrays:

- Array arguments are deduced to reference to const types. For example - [10] - : + Array arguments are deduced to reference to const types. For example [10]:

make_list("Donald", "Daisy")
 
@@ -187,7 +185,7 @@
list<void (*)(int)>
 

- + boost::ref

@@ -227,12 +225,12 @@



-

[10] - Note that the type of a string literal is an array of const characters, - not const char*. To get make_list to create a list with an element of a non-const - array type one must use the ref - wrapper (see boost::ref). -

+

[10] + Note that the type of a string literal is an array of const characters, not + const char*. To get make_list to create a list with an element of a non-const + array type one must use the ref + wrapper (see boost::ref). +

diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index e591e554..efc1e401 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -35,18 +35,12 @@ The library is organized in three layers:

- + Layers

-
-

-

-

- fusion_org -

-

-

-
+

+ fusion_org +

The entire library is found in the "boost/fusion" directory. Modules are organized in directories. Each module has its own header @@ -66,128 +60,128 @@ against.

- + Directory

  • - tuple -
  • + tuple +
  • - algorithm -
      + algorithm +
      • - iteration -
      • + iteration +
      • - query -
      • + query +
      • - transformation -
      • + transformation +
      - +
    • - adapted -
        + adapted +
        • - array -
        • + array +
        • - mpl -
        • + mpl +
        • - boost::tuple -
        • + boost::tuple +
        • - std_pair -
        • + std_pair +
        • - struct -
        • + struct +
        • - variant -
        • + variant +
        - +
      • - view -
          + view +
          • - filter_view -
          • + filter_view +
          • - iterator_range -
          • + iterator_range +
          • - joint_view -
          • + joint_view +
          • - reverse_view -
          • + reverse_view +
          • - single_view -
          • + single_view +
          • - transform_view -
          • + transform_view +
          • - zip_view -
          • + zip_view +
          - +
        • - container -
            + container +
            • - deque -
            • + deque +
            • - list -
            • + list +
            • - map -
            • + map +
            • - set -
            • + set +
            • - vector -
            • + vector +
            • - generation -
            • + generation +
            - +
          • - mpl -
          • + mpl +
          • - functional -
          • + functional +
          • - sequence -
              + sequence +
              • - comparison -
              • + comparison +
              • - intrinsic -
              • + intrinsic +
              • - io -
              • + io +
              - +
            • - iterator -
            • + iterator +
            • - support -
            • + support +

            - + Example

            @@ -202,15 +196,14 @@

            The first includes all containers The second includes only list - [4] - . + [4].



            -

            [4] - Modules may contain smaller components. Header file information for each - component will be provided as part of the component's documentation. -

            +

            [4] + Modules may contain smaller components. Header file information for each + component will be provided as part of the component's documentation. +

diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 55e9fde4..f4e461f6 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -22,30 +22,18 @@
PrevUpHomeNext
-
+
-
-

-

-

- Algorithms + Data Structures = Programs. -

-

-

-
-
-

-

-

- --Niklaus Wirth -

-

-

-
+

+ Algorithms + Data Structures = Programs. +

+

+ --Niklaus Wirth +

- + Description

@@ -63,7 +51,7 @@ of compile time metaprogramming with runtime programming.

- + Motivation

@@ -89,7 +77,7 @@ an instant AHA! moment.

- + How to use this manual

@@ -97,7 +85,7 @@ icons precede some text to indicate:

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -200,7 +188,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 7c8b90b5..79b6e7a5 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+
@@ -34,16 +34,13 @@

For starters, we shall include all of Fusion's Sequence(s) - [2] - : + [2]:

#include <boost/fusion/sequence.hpp>
 #include <boost/fusion/include/sequence.hpp>
 

- Let's begin with a vector - [3] - : + Let's begin with a vector [3]:

vector<int, char, std::string> stuff(1, 'x', "howdy");
 int i = at_c<0>(stuff);
@@ -59,7 +56,7 @@
       Let's see some examples.
     

- + Print the vector as XML

@@ -98,7 +95,7 @@ it calls print_xml's operator() for each element in stuff.

-
+
@@ -114,7 +111,7 @@ print just about any Fusion Sequence.

- + Print only pointers

@@ -146,7 +143,7 @@ Easy, right?

- + Associative tuples

@@ -218,7 +215,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -229,16 +226,16 @@



-

[2] - There are finer grained header files available if you wish to have more - control over which components to include (see section Orgainization - for details). -

-

[3] - Unless otherwise noted, components are in namespace boost::fusion. - For the sake of simplicity, code in this quick start implies using directives for the fusion components - we will be using. -

+

[2] + There are finer grained header files available if you wish to have more control + over which components to include (see section Orgainization + for details). +

+

[3] + Unless otherwise noted, components are in namespace boost::fusion. + For the sake of simplicity, code in this quick start implies using directives for the fusion components + we will be using. +

[Caution] Caution
diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 24845fd1..dfcd803a 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -21,39 +21,39 @@
PrevUpHome
-
+
  1. -New - Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. -
  2. + New + Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. +
  3. -The Boost - Tuple Library, Jaakko Jarvi, 2001. -
  4. + The + Boost Tuple Library, Jaakko Jarvi, 2001. +
  5. -Spirit Parser Library, - Joel de Guzman, 2001-2006. -
  6. + Spirit Parser Library, + Joel de Guzman, 2001-2006. +
  7. -The Boost MPL Library, - Aleksey Gurtovoy and David Abrahams, 2002-2004. -
  8. + The Boost MPL Library, + Aleksey Gurtovoy and David Abrahams, 2002-2004. +
  9. -Boost Array, - Nicolai Josuttis, 2002-2004. -
  10. + Boost Array, + Nicolai Josuttis, 2002-2004. +
  11. -Standard Template Library Programmer's - Guide, Hewlett-Packard Company, 1994. -
  12. + Standard Template Library Programmer's + Guide, Hewlett-Packard Company, 1994. +
  13. -Boost.Ref, Jaakko - Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. -
  14. + Boost.Ref, + Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. +
diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index c5c3ea39..0ac4c573 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

#include <boost/fusion/sequence.hpp>
diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
index ed58095b..95f9f77b 100644
--- a/doc/html/fusion/sequence/concepts.html
+++ b/doc/html/fusion/sequence/concepts.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

@@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

- + Associativity

diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 274f753b..46bf3a0b 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -22,13 +22,13 @@

PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ Fusion associative sequences have no implied ordering relation. Instead, type identity is used to impose an equivalence relation on keys.

-
+

Notation

s
@@ -64,7 +64,7 @@
- + Valid Expressions
@@ -173,7 +173,7 @@
- + Result Type Expressions
@@ -247,7 +247,7 @@

- + Expression Semantics
@@ -302,35 +302,39 @@
- + Models
diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 0c78c2ba..58333c55 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -37,14 +37,14 @@ Iterator.

- + Refinement of

Forward Sequence

-
+

Notation

s
@@ -66,7 +66,7 @@
- + Valid Expressions
@@ -198,7 +198,7 @@
- + Result Type Expressions
@@ -259,7 +259,7 @@
- + Expression Semantics
@@ -299,26 +299,34 @@
- + Models
diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 66b3bca1..58526672 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ equality (if the container's element type is Equality Comparable) and of lexicographical ordering (if the container's element type is LessThan Comparable).

-
+

Notation

s
@@ -60,7 +60,7 @@
- + Valid Expressions
@@ -235,7 +235,7 @@
- + Result Type Expressions
@@ -320,7 +320,7 @@
- + Expression Semantics
@@ -408,7 +408,7 @@
- + Invariants

@@ -416,42 +416,71 @@

  • -[begin(s), end(s)) is always a valid range. -
  • + [begin(s), end(s)) is always a valid range. +
  • - An Algorithm that iterates through - the range [begin(s), end(s)) will pass through every element of - s exactly once. -
  • + An Algorithm that iterates + through the range [begin(s), end(s)) will pass through every element of + s exactly once. +
  • -begin(s) - is identical to end(s)) - if and only if s is empty. -
  • + begin(s) + is identical to end(s)) + if and only if s is + empty. +
  • - Two different iterations through s - will access its elements in the same order. -
  • + Two different iterations through s + will access its elements in the same order. +
- + Models
diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index a6f28299..556e2879 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ sequence elements.

- + Refinement of
@@ -46,7 +46,7 @@ Bidirectional Sequence

-
+

Notation

s
@@ -73,7 +73,7 @@
- + Valid Expressions
@@ -205,7 +205,7 @@
- + Result Type Expressions
@@ -291,7 +291,7 @@

- + Expression Semantics
@@ -331,26 +331,34 @@
- + Models
diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 5da91cef..3641d9c3 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -36,12 +36,10 @@ counterparts of these functions are usually implemented as member functions. Intrinsic functions, unlike Algorithms, are not generic across the full Sequence - repertoire. They need to be implemented for each Fusion Sequence - [5] - . + repertoire. They need to be implemented for each Fusion Sequence[5].

- + Header
#include <boost/fusion/sequence/intrinsic.hpp>
@@ -49,10 +47,10 @@
 


-

[5] - In practice, many of intrinsic functions have default implementations - that will work in majority of cases -

+

[5] + In practice, many of intrinsic functions have default implementations that + will work in majority of cases +

diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index cb1de60c..f3586f56 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 42732f02..8e50c4e7 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
at
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
template <typename N, typename Sequence>
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -138,14 +138,14 @@
deref(advance<N>(begin(s)))
 
- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
index 3dd435ba..374a911a 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
template <int N, typename Sequence>
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -138,14 +138,14 @@
deref(advance<N>(begin(s)))
 
- + Header
#include <boost/fusion/sequence/intrinsic/at_c.hpp>
 #include <boost/fusion/include/at_c.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
index 7054e840..ebf8c1b2 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
template <typename Key, typename Sequence>
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ with Key.

- + Header
#include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/include/at_key.hpp>
 
- + Example
set<int, char, bool> s(1, 'x', true);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
index a6ebe1b0..2cf83fcc 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/back.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the last element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/back.hpp>
 #include <boost/fusion/include/back.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
index 20ff510c..c38bbe2e 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns an iterator pointing to the first element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -103,37 +103,37 @@

Semantics: Returns an iterator pointing to the first element in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/include/begin.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
index abd9f157..ab5e14f9 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

- + Synopsis
template <typename Sequence>
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ to false.

- + Header
#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/include/empty.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
index 5dafb92d..560cb4e9 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
end
- + Description

Returns an iterator pointing to one element past the end of the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -103,37 +103,37 @@

Semantics: Returns an iterator pointing to one element past the end of the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/include/end.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
index 90625861..1a734eb5 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the first element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/include/front.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
index 34a255f3..f2b9952c 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ to false.

- + Synopsis
template <typename Key, typename Sequence>
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

- + Header
#include <boost/fusion/sequence/intrinsic/has_key.hpp>
 #include <boost/fusion/include/has_key.hpp>
 
- + Example
set<int, char, bool> s(1, 'x', true);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
index 8979f928..e141bc03 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

- + Synopsis
template <typename Sequence>
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/include/size.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
index 2ff4f6db..a69b9c33 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
@@ -22,26 +22,26 @@
 
PrevUpHomeNext
-
+
- + Description

Performs an element by element swap of the elements in 2 sequences.

- + Synopsis
template<typename Seq1, typename Seq2>
 void swap(Seq1& seq1, Seq2& seq2);
 
- + Parameters
@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

- + Example
vector<int, std::string> v1(1, "hello"), v2(2, "world");
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html
index 35b5be17..a8dfc9f2 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html index 8fe3ff24..f5060623 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html @@ -22,21 +22,19 @@
PrevUpHomeNext
-
+
at
- + Description

- Returns the result type of at - [6] - . + Returns the result type of at[6].

- + Synopsis
template<
@@ -48,7 +46,7 @@
 };
 
-

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -113,7 +111,7 @@

- + Expression Semantics
@@ -127,14 +125,14 @@ using at to access the Nth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
@@ -142,12 +140,12 @@
 


-

[6] - result_of::at reflects the actual return - type of the function at. Sequence(s) - typically return references to its elements via the at function. If you want - to get the actual element type, use result_of::value_at -

+

[6] + result_of::at reflects the actual return + type of the function at. Sequence(s) + typically return references to its elements via the at function. If you want to + get the actual element type, use result_of::value_at +

diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 3034384a..bbc11396 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -22,21 +22,19 @@
PrevUpHomeNext
-
+
- + Description

- Returns the result type of at_c - [7] - . + Returns the result type of at_c[7].

- + Synopsis
template<
@@ -48,7 +46,7 @@
 };
 
-

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -112,7 +110,7 @@

- + Expression Semantics
@@ -126,14 +124,14 @@ using at_c to access the Mth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
@@ -141,12 +139,12 @@
 


-

[7] - result_of::at_c reflects the actual - return type of the function at_c. Sequence(s) - typically return references to its elements via the at_c function. If you want - to get the actual element type, use result_of::value_at_c -

+

[7] + result_of::at_c reflects the actual return + type of the function at_c. Sequence(s) + typically return references to its elements via the at_c function. If you want + to get the actual element type, use result_of::value_at_c +

diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index b84cd4f4..7d5c9449 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -22,21 +22,19 @@
PrevUpHomeNext
-
+
- + Description

- Returns the result type of at_key - [8] - . + Returns the result type of at_key[8].

- + Synopsis
template<
@@ -48,7 +46,7 @@
 };
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -112,7 +110,7 @@

- + Expression Semantics
@@ -128,14 +126,14 @@ Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/include/at_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
@@ -143,12 +141,12 @@
 


-

[8] - result_of::at_key reflects the actual - return type of the function at_key. _sequence_s - typically return references to its elements via the at_key function. If you - want to get the actual element type, use result_of::value_at_key -

+

[8] + result_of::at_key reflects the actual + return type of the function at_key. _sequence_s + typically return references to its elements via the at_key function. If you want + to get the actual element type, use result_of::value_at_key +

diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index e461325b..e3fc83e4 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -22,19 +22,19 @@
PrevUpHomeNext
-
+
- + Description

Returns the result type of back.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

- + Header
#include <boost/fusion/sequence/intrinsic/back.hpp>
 #include <boost/fusion/include/back.hpp>
 
- + Example
typedef vector<int,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
index dd7d329e..1d204889 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of begin.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -100,37 +100,37 @@

Semantics: Returns the type of an iterator to the first element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/include/begin.hpp>
 
- + Example
typedef vector<int> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
index 8104fb56..4d7c8c7b 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of empty.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ mpl::false_ otherwise.

- + Header
#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/include/empty.hpp>
 
- + Example
typedef vector<> empty_vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
index 3f25a7ee..3d5388c6 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
end
- + Description

Returns the result type of end.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -100,37 +100,37 @@

Semantics: Returns the type of an iterator one past the end of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/include/end.hpp>
 
- + Example
typedef vector<int> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
index e77dcdd6..c4bb9303 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of front.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
#include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/include/front.hpp>
 
- + Example
typedef vector<int,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
index e00e5d96..b30efb45 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of has_key.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ mpl::false_ otherwise.

- + Header
#include <boost/fusion/sequence/intrinsic/has_key.hpp>
 #include <boost/fusion/include/has_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
index d18c737b..bf27573e 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the result type of size.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,14 +104,14 @@ in Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/include/size.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
index c112ac4b..8e60838f 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the return type of swap.

- + Synopsis
template<typename Seq1, typename Seq2>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -102,7 +102,7 @@ Semantics: Always returns void.

- + Header
#include <boost/fusion/sequence/intrinsic/swap.hpp>
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
index 8fd11cd7..5224e293 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -125,14 +125,14 @@ the Nth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
 #include <boost/fusion/include/value_at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
index 36e02ef4..0df14f6e 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -124,14 +124,14 @@ the Mth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
 #include <boost/fusion/include/value_at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
index c69676a1..b80b475e 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Returns the actual element type associated with a Key from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -125,14 +125,14 @@ in Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 #include <boost/fusion/include/value_at_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html
index be7e0c01..6d002b05 100644
--- a/doc/html/fusion/sequence/operator.html
+++ b/doc/html/fusion/sequence/operator.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html index 549a516c..dd7afec0 100644 --- a/doc/html/fusion/sequence/operator/comparison.html +++ b/doc/html/fusion/sequence/operator/comparison.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -49,7 +49,7 @@ only until the result is clear.

- + Header
#include <boost/fusion/sequence/comparison.hpp>
diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
index 6c531daa..497be9fa 100644
--- a/doc/html/fusion/sequence/operator/comparison/equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/equal.html
@@ -22,19 +22,19 @@
 
PrevUpHomeNext
-
+
- + Description

Compare two sequences for equality.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -42,7 +42,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -123,14 +123,14 @@ true.

- + Header
#include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/include/equal_to.hpp>
 
- + Example
vector<int, char> v1(5, 'a');
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
index 7ef88393..c66d9774 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
+++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
greater than @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns b < a.

- + Header
#include <boost/fusion/sequence/comparison/less_equal.hpp>
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
index 6c1dd074..024f1e12 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
greater than equal @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

- + Header
#include <boost/fusion/sequence/comparison/greater_equal.hpp>
 #include <boost/fusion/include/greater_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
index d8c30206..e788621e 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than.html
+++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
less than @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -114,14 +114,14 @@ and b.

- + Header
#include <boost/fusion/sequence/comparison/less.hpp>
 #include <boost/fusion/include/less.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
index 42124f53..aab0a2f5 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
less than equal @@ -31,7 +31,7 @@ Lexicographically compare two sequences.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

- + Header
#include <boost/fusion/sequence/comparison/less_equal.hpp>
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
index ddb184e0..771bc176 100644
--- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
not equal @@ -31,7 +31,7 @@ Compare two sequences for inequality.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ Returns !(a == b).

- + Header
#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 #include <boost/fusion/include/not_equal_to.hpp>
 
- + Example
vector<int, char> v3(5, 'b');
diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
index a747bb6e..d0d165ae 100644
--- a/doc/html/fusion/sequence/operator/i_o.html
+++ b/doc/html/fusion/sequence/operator/i_o.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+

I/O

@@ -54,7 +54,7 @@

The library defines three manipulators for changing the default behavior:

-
+

Manipulators

tuple_open(arg)
@@ -113,7 +113,7 @@ representation may not be unambiguously parseable.

- + Header
#include <boost/fusion/sequence/io.hpp>
diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
index 188205d8..e7a29d3a 100644
--- a/doc/html/fusion/sequence/operator/i_o/in.html
+++ b/doc/html/fusion/sequence/operator/i_o/in.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
in
- + Description

@@ -35,7 +35,7 @@ stream.

- + Synopsis
template <typename IStream, typename Sequence>
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ e.

- + Header
#include <boost/fusion/sequence/io/in.hpp>
 #include <boost/fusion/include/in.hpp>
 
- + Example
vector<int, std::string, char> v;
diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
index 5f63c0f8..7c970379 100644
--- a/doc/html/fusion/sequence/operator/i_o/out.html
+++ b/doc/html/fusion/sequence/operator/i_o/out.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
out
- + Description

@@ -35,7 +35,7 @@ stream.

- + Synopsis
template <typename OStream, typename Sequence>
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ e.

- + Header
#include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/include/out.hpp>
 
- + Example
std::cout << make_vector(123, "Hello", 'x') << std::endl;
diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html
index 6949af9b..354d106b 100644
--- a/doc/html/fusion/support.html
+++ b/doc/html/fusion/support.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index eb7ee456..cdacae86 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ Sequence Concepts).

- + Synopsis
namespace traits
@@ -50,7 +50,7 @@
 }
 
- + Parameters
@@ -95,7 +95,7 @@
- + Expression Semantics
@@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

- + Header
#include <boost/fusion/support/category_of.hpp>
 #include <boost/fusion/include/category_of.hpp>
 
- + Example
using boost::is_base_of;
diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
index a0ceb5ec..37183e1e 100644
--- a/doc/html/fusion/support/deduce.html
+++ b/doc/html/fusion/support/deduce.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

- + Header
#include <boost/fusion/support/deduce.hpp>
 #include <boost/fusion/include/deduce.hpp>
 
- + Synopsis
namespace traits
@@ -60,7 +60,7 @@
 }
 
- + Example
template <typename T>
@@ -80,10 +80,12 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index fe813226..a14b8f19 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,14 +38,14 @@ original type as its argument.

- + Header
#include <boost/fusion/support/deduce_sequence.hpp>
 #include <boost/fusion/include/deduce_sequence.hpp>
 
- + Synopsis
namespace traits
@@ -58,7 +58,7 @@
 }
 
- + Example
template <class Seq>
@@ -80,10 +80,12 @@
 }
 
- + See also
- +
diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index e3390861..ce646d6b 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ conforming sequences.

- + Synopsis
namespace traits
@@ -51,7 +51,7 @@
 }
 
- + Parameters
@@ -96,7 +96,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ otherwise.

- + Header
#include <boost/fusion/support/is_sequence.hpp>
 #include <boost/fusion/include/is_sequence.hpp>
 
- + Example
BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index 2c81660f..5064d55d 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis
namespace traits
@@ -54,7 +54,7 @@
 }
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
typedef traits::is_view<T>::type c;
@@ -115,14 +115,14 @@
         otherwise.
       

- + Header
#include <boost/fusion/support/is_view.hpp>
 #include <boost/fusion/include/is_view.hpp>
 
- + Example
BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index 18054712..d488059a 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

- + Synopsis
template <typename First, typename Second>
@@ -60,7 +60,7 @@
 make_pair(Second const &);
 
- + Template parameters
@@ -107,7 +107,7 @@
-
+

Notation

P
@@ -137,7 +137,7 @@
- + Expression Semantics
@@ -317,14 +317,14 @@
- + Header
#include <boost/fusion/support/pair.hpp>
 #include <boost/fusion/include/pair.hpp>
 
- + Example
pair<int, char> p('X');
diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index 142ebe3e..263e11e6 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -41,7 +41,7 @@ conforming sequences.

- + Synopsis
namespace traits
@@ -54,7 +54,7 @@
 }
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
typedef traits::tag_of<T>::type tag;
@@ -112,14 +112,14 @@
         with T.
       

- + Header
#include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/include/tag_of.hpp>
 
- + Example
typedef traits::tag_of<list<> >::type tag1;
diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
index 2858e0c6..da2e41f0 100644
--- a/doc/html/fusion/tuple.html
+++ b/doc/html/fusion/tuple.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html index 30aab276..80c566fa 100644 --- a/doc/html/fusion/tuple/class_template_tuple.html +++ b/doc/html/fusion/tuple/class_template_tuple.html @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -48,7 +48,7 @@ in future releases of fusion.

- + Synopsis
template<
diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
index 56d0db77..aabd0354 100644
--- a/doc/html/fusion/tuple/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,10 +38,10 @@ in this section.

- + Specification
-
+

Notation

T1 ... diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index ae2a443d..e92963d3 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
template<int I, T>
diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
index 89d8bc8f..94bd7285 100644
--- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
@@ -22,13 +22,13 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,10 +36,10 @@ Tuple provides the standard boolean relational operators.

- + Specification
-
+

Notation

T1 ... diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index 05ddbb44..0dd38f24 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -22,13 +22,13 @@
PrevUpHomeNext
-
+
- + Description

@@ -38,7 +38,7 @@ functions are described in this section.

- + Specification
template<typename T1, typename T2, ..., typename TN>
diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
index 8667fd8f..5de79621 100644
--- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
@@ -22,13 +22,13 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -37,7 +37,7 @@ tuple size, and the element types.

- + Specification
tuple_size<T>::value
diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
index a97a103b..087ed9e9 100644
--- a/doc/html/fusion/tuple/pairs.html
+++ b/doc/html/fusion/tuple/pairs.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification
tuple_size<std::pair<T1, T2> >::value
diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
index 0dfbef98..5078bd66 100644
--- a/doc/html/fusion/view.html
+++ b/doc/html/fusion/view.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -46,7 +46,7 @@ to copy and be passed around by value.

- + Header

#include <boost/fusion/view.hpp>
diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
index a93671b3..ad376bdf 100644
--- a/doc/html/fusion/view/filter_view.html
+++ b/doc/html/fusion/view/filter_view.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
#include <boost/fusion/view/filter_view.hpp>
 #include <boost/fusion/include/filter_view.hpp>
 
- + Synopsis
template <typename Sequence, typename Pred>
 struct filter_view;
 
- + Template parameters
@@ -115,19 +115,21 @@
- + Model of
-
+

Notation

F
@@ -146,7 +148,7 @@
- + Expression Semantics

@@ -216,7 +218,7 @@

- + Example
using boost::mpl::_;
diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
index 328c666a..78ab5603 100644
--- a/doc/html/fusion/view/iterator_range.html
+++ b/doc/html/fusion/view/iterator_range.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
#include <boost/fusion/view/iterator_range.hpp>
 #include <boost/fusion/include/iterator_range.hpp>
 
- + Synopsis
template <typename First, typename Last>
 struct iterator_range;
 
- + Template parameters
@@ -111,27 +111,27 @@
- + Model of
-
+

Notation

IR
@@ -153,7 +153,7 @@
- + Expression Semantics
@@ -227,7 +227,7 @@
- + Example
char const* s = "Ruby";
diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
index 255036f7..6977b599 100644
--- a/doc/html/fusion/view/joint_view.html
+++ b/doc/html/fusion/view/joint_view.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -35,21 +35,21 @@ which is a concatenation of two sequences.

- + Header
#include <boost/fusion/view/joint_view.hpp>
 #include <boost/fusion/include/joint_view.hpp>
 
- + Synopsis
template <typename Sequence1, typename Sequence2>
 struct joint_view;
 
- + Template parameters
@@ -113,20 +113,22 @@
- + Model of
-
+

Notation

JV
@@ -148,7 +150,7 @@
- + Expression Semantics

@@ -220,7 +222,7 @@

- + Example
vector<int, char> v1(3, 'x');
diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
index b9d73600..6a3bb39f 100644
--- a/doc/html/fusion/view/nview.html
+++ b/doc/html/fusion/view/nview.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

- + Header
#include <boost/fusion/view/nview.hpp>
 #include <boost/fusion/include/nview.hpp>
 
- + Synopsis
template <typename Sequence, typename Indicies>
@@ -56,7 +56,7 @@
 as_nview(Sequence& s);
 
- + Template parameters
@@ -137,15 +137,15 @@
- + Model of
- +

Notation

NV
@@ -163,7 +163,7 @@
- + Expression Semantics

@@ -239,7 +239,7 @@ of references to the elements of the original Fusion Sequence

- + Example
typedef vector<int, char, double> vec;
diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
index b8c28bc5..1cfc654a 100644
--- a/doc/html/fusion/view/reverse_view.html
+++ b/doc/html/fusion/view/reverse_view.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -32,21 +32,21 @@ element will be its first.

- + Header
#include <boost/fusion/view/reverse_view.hpp>
 #include <boost/fusion/include/reverse_view.hpp>
 
- + Synopsis
template <typename Sequence>
 struct reverse_view;
 
- + Template parameters
@@ -91,27 +91,27 @@
- + Model of
-
+

Notation

RV
@@ -129,7 +129,7 @@
- + Expression Semantics
@@ -201,7 +201,7 @@
- + Example
typedef vector<int, short, double> vector_type;
diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
index 6cda3797..edf9436f 100644
--- a/doc/html/fusion/view/single_view.html
+++ b/doc/html/fusion/view/single_view.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -31,21 +31,21 @@ a value as a single element sequence.

- + Header
#include <boost/fusion/view/single_view.hpp>
 #include <boost/fusion/include/single_view.hpp>
 
- + Synopsis
template <typename T>
 struct single_view;
 
- + Template parameters
@@ -89,11 +89,13 @@
- + Model of
- -
+ +

Notation

S
@@ -111,7 +113,7 @@
- + Expression Semantics

@@ -182,7 +184,7 @@

- + Example
single_view<int> view(3);
diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
index 6cda1fe0..9c87479e 100644
--- a/doc/html/fusion/view/transform_view.html
+++ b/doc/html/fusion/view/transform_view.html
@@ -22,7 +22,7 @@
 
PrevUpHomeNext
-
+
@@ -36,14 +36,14 @@ Traversal Concept) of its underlying sequence or sequences.

- + Header
#include <boost/fusion/view/transform_view.hpp>
 #include <boost/fusion/include/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -179,18 +179,18 @@
- + Model of
-
+ Forward Sequence, + Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see + Sequence Traversal + Concept) of its underlying sequence. +
+

Notation

TV
@@ -234,7 +234,7 @@
- + Expression Semantics
@@ -329,7 +329,7 @@
- + Example
struct square
diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
index 6d7eb0bd..19aee352 100644
--- a/doc/html/fusion/view/zip_view.html
+++ b/doc/html/fusion/view/zip_view.html
@@ -22,12 +22,12 @@
 
PrevUpHomeNext
-
+
- + Description

@@ -38,21 +38,21 @@ to the component _sequence_s.

- + Header
#include <boost/fusion/view/zip_view.hpp>
 #include <boost/fusion/include/zip_view.hpp>
 
- + Synopsis
template <typename Sequences>
 struct zip_view;
 
- + Template parameters
@@ -97,18 +97,18 @@
- + Model of
-
+ Forward Sequence, + Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see + Sequence Traversal + Concept) of its underlying sequence. +
+

Notation

ZV
@@ -126,7 +126,7 @@
- + Expression Semantics

@@ -197,7 +197,7 @@

- + Example
typedef vector<int,int> vec1;
diff --git a/doc/html/index.html b/doc/html/index.html
index 51e5c6f1..55f5835f 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -18,7 +18,7 @@
 
 
Next
-
+

Chapter 1. Fusion 2.0

@@ -33,8 +33,8 @@
-
-

+

+

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

@@ -256,7 +256,7 @@
- +

Last revised: April 11, 2010 at 14:53:40 GMT

Last revised: June 18, 2010 at 17:16:15 GMT


diff --git a/doc/view.qbk b/doc/view.qbk index d4521e4e..f4a00a78 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -548,4 +548,70 @@ of the original Fusion __sequence__ [endsect] + +[section repetitive_view] + +[heading Description] + +`repetitive_view` presents a view which iterates over a given +__sequence__ repeatedly. Because a `repetitive_view` +has infinite length, it can only be used when some external +condition determines the end. Thus, initializing a fixed +length sequence with a `repetitive_view` is okay, but +printing a `repetitive_view` to `std::cout` is not. + +[heading Header] + + #include + #include + +[heading Synopsis] + + template + struct repetitive_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence`] [An arbitrary Fusion __forward_sequence__] + []] +] + +[variablelist Notation + [[`RV`] [A `repetitive_view` type]] + [[`s`] [An instance of `Sequences`]] + [[`rv`, `rv1`, `rv2`] [Instances of `RV`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Return Type] [Semantics]] + [[`RV(s)`] [] [Creates an `repetitive_view` given the underlying sequence.]] + [[`RV(rv1)`] [] [Copy constructs an `repetitive_view` from another `repetitive_view`, `rv1`.]] + [[`rv1 = rv2`] [] [Assigns to a `repetitive_view`, `rv1`, from another `repetitive_view`, `rv2`.]] + [[`__begin__(rv)`] [__forward_iterator__] []] + [[`__end__(rv)`] [__forward_iterator__] [Creates an unreachable iterator (since the sequnce is infinite)]] +] + +[heading Result Type Expressions] + +[table + [[Expression]] + [[`__result_of_begin__::type`]] + [[`__result_of_end__::type`]] +] + +[heading Example] + typedef __vector__ vec1; + typedef __vector__ vec2; + + vec1 v1(1, 'c', 2.0); + vec2 v2(repetitive_view(v1)); + + std::cout << v2 << std::endl; // 1, 'c', 2.0, 1, 'c' + +[endsect] + [endsect] diff --git a/include/boost/fusion/adapted.hpp b/include/boost/fusion/adapted.hpp index 0dd1f0e7..09684204 100644 --- a/include/boost/fusion/adapted.hpp +++ b/include/boost/fusion/adapted.hpp @@ -8,11 +8,12 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 -#include -#include #include -#include -#include +#include +#include #include +#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/boost_array/array_iterator.hpp b/include/boost/fusion/adapted/boost_array/array_iterator.hpp index dbad7763..5453a639 100644 --- a/include/boost/fusion/adapted/boost_array/array_iterator.hpp +++ b/include/boost/fusion/adapted/boost_array/array_iterator.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(Pos, >=, 0); - BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size); + BOOST_MPL_ASSERT_RELATION(Pos, <=, static_cast(Array::static_size)); typedef mpl::int_ index; typedef Array array_type; diff --git a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index cf3183b1..553429e3 100644 --- a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -47,8 +47,8 @@ namespace boost { namespace fusion { typedef Cons cons_type; - explicit boost_tuple_iterator(Cons& cons) - : cons(cons) {} + explicit boost_tuple_iterator(Cons& in_cons) + : cons(in_cons) {} Cons& cons; template @@ -127,6 +127,10 @@ namespace boost { namespace fusion return type(); } }; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + boost_tuple_iterator& operator= (boost_tuple_iterator const&); }; template diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp index 26eb3ae6..60d8d9e4 100644 --- a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp +++ b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp @@ -62,6 +62,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ assoc_struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_CLASS_C) @@ -70,6 +71,16 @@ (0), \ (0)(NAME), \ assoc_struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_C) + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_CLASS_C) diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp index e73b1fe2..99e45ada 100644 --- a/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp +++ b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp @@ -17,7 +17,7 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_ASSOC_CLASS( \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_AS_VIEW( \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ ATTRIBUTES) diff --git a/include/boost/fusion/adapted/class/adapt_class.hpp b/include/boost/fusion/adapted/class/adapt_class.hpp index f3ee7e93..fdd56216 100644 --- a/include/boost/fusion/adapted/class/adapt_class.hpp +++ b/include/boost/fusion/adapted/class/adapt_class.hpp @@ -48,6 +48,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_CLASS_C) @@ -56,6 +57,16 @@ (0), \ (0)(NAME), \ struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_CLASS_C) + +#define BOOST_FUSION_ADAPT_CLASS_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_CLASS_C) diff --git a/include/boost/fusion/adapted/class/adapt_class_named.hpp b/include/boost/fusion/adapted/class/adapt_class_named.hpp index 4dec9064..bbc1d1ae 100644 --- a/include/boost/fusion/adapted/class/adapt_class_named.hpp +++ b/include/boost/fusion/adapted/class/adapt_class_named.hpp @@ -19,7 +19,7 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_CLASS( \ + BOOST_FUSION_ADAPT_CLASS_AS_VIEW( \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ ATTRIBUTES) diff --git a/include/boost/fusion/adapted/class/class_iterator.hpp b/include/boost/fusion/adapted/class/class_iterator.hpp deleted file mode 100644 index 639ee927..00000000 --- a/include/boost/fusion/adapted/class/class_iterator.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M) -#define FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct class_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, extension::class_size::value); - - typedef mpl::int_ index; - typedef Class class_type; - - class_iterator(Class& class_) - : class_(class_) {} - Class& class_; - - template - struct value_of - : extension::class_member - { - }; - - template - struct deref - { - typedef typename - mpl::if_< - is_const - , typename extension::class_member::get_type - , typename extension::class_member::proxy - >::type - type; - - static type - call(Iterator const& iter) - { - return extension::class_member:: - call(iter.class_); - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::class_type class_type; - typedef class_iterator type; - - static type - call(Iterator const& iter) - { - return type(iter.class_); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/adapted/class/detail/adapt_base.hpp b/include/boost/fusion/adapted/class/detail/adapt_base.hpp index 54b701f3..264390a6 100644 --- a/include/boost/fusion/adapted/class/detail/adapt_base.hpp +++ b/include/boost/fusion/adapted/class/detail/adapt_base.hpp @@ -45,8 +45,8 @@ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) rvalue; \ \ - class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj)\ - : obj(obj) \ + class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \ + : obj(o) \ {} \ \ template \ @@ -63,6 +63,9 @@ } \ \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \ + \ + private: \ + class_member_proxy& operator= (class_member_proxy const&); \ }; \ \ template< \ diff --git a/include/boost/fusion/adapted/class/detail/at_impl.hpp b/include/boost/fusion/adapted/class/detail/at_impl.hpp deleted file mode 100644 index 12b5171f..00000000 --- a/include/boost/fusion/adapted/class/detail/at_impl.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct at_impl; - - template - struct class_member; - - template - struct class_size; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::class_size::value); - - typedef typename - extension::class_member - element; - - typedef typename - mpl::if_< - is_const - , typename class_member::get_type - , typename class_member::proxy - >::type - type; - - static type - call(Sequence& seq) - { - return extension:: - class_member::call(seq); - } - - //~ static typename class_member::get_type - //~ call(Sequence const& seq) - //~ { - //~ return extension:: - //~ class_member::call(seq); - //~ } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp deleted file mode 100644 index 9df985bf..00000000 --- a/include/boost/fusion/adapted/class/detail/at_key_impl.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct at_key_impl; - - template - struct class_assoc_member; - - template <> - struct at_key_impl - { - template - struct apply - { - typedef typename - extension::class_assoc_member - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& seq) - { - return extension:: - class_assoc_member::call(seq); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/begin_impl.hpp b/include/boost/fusion/adapted/class/detail/begin_impl.hpp deleted file mode 100644 index 4fadac4e..00000000 --- a/include/boost/fusion/adapted/class/detail/begin_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM) -#define BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct begin_impl; - - template <> - struct begin_impl - { - template - struct apply - { - typedef class_iterator type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/category_of_impl.hpp b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp deleted file mode 100644 index 821cf38b..00000000 --- a/include/boost/fusion/adapted/class/detail/category_of_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - struct random_access_traversal_tag; - - namespace extension - { - template - struct category_of_impl; - - template<> - struct category_of_impl - { - template - struct apply - { - typedef random_access_traversal_tag type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/end_impl.hpp b/include/boost/fusion/adapted/class/detail/end_impl.hpp deleted file mode 100644 index 81c02c30..00000000 --- a/include/boost/fusion/adapted/class/detail/end_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct end_impl; - - template - struct class_size; - - template <> - struct end_impl - { - template - struct apply - { - typedef - class_iterator< - Sequence - , class_size::value - > - type; - - static type - call(Sequence& v) - { - return type(v); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/has_key_impl.hpp b/include/boost/fusion/adapted/class/detail/has_key_impl.hpp deleted file mode 100644 index 27f1adce..00000000 --- a/include/boost/fusion/adapted/class/detail/has_key_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM - -#include -#include - -namespace boost { namespace fusion { - - struct class_tag; - - namespace extension - { - struct no_such_member; - - template - struct has_key_impl; - - template - struct class_assoc_member; - - template<> - struct has_key_impl - { - template - struct apply - : mpl::not_::type> > - { - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp deleted file mode 100644 index c1d35de1..00000000 --- a/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct is_sequence_impl; - - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/is_view_impl.hpp b/include/boost/fusion/adapted/class/detail/is_view_impl.hpp deleted file mode 100644 index 86ce0074..00000000 --- a/include/boost/fusion/adapted/class/detail/is_view_impl.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct is_view_impl; - - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/size_impl.hpp b/include/boost/fusion/adapted/class/detail/size_impl.hpp deleted file mode 100644 index de34a3b1..00000000 --- a/include/boost/fusion/adapted/class/detail/size_impl.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM) -#define BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM - -#include - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct class_size; - } - - struct class_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : extension::class_size {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/value_at_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_impl.hpp deleted file mode 100644 index 64d2fc3a..00000000 --- a/include/boost/fusion/adapted/class/detail/value_at_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM) -#define BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM - -#include -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct value_at_impl; - - template - struct class_member; - - template - struct class_size; - - template <> - struct value_at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::class_size::value); - - typedef typename - extension::class_member::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp deleted file mode 100644 index f9adc104..00000000 --- a/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM) -#define BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM - -#include - -namespace boost { namespace fusion -{ - struct class_tag; - - namespace extension - { - template - struct value_at_key_impl; - - template - struct class_assoc_member; - - template <> - struct value_at_key_impl - { - template - struct apply - { - typedef typename - extension::class_assoc_member::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/class/extension.hpp b/include/boost/fusion/adapted/class/extension.hpp deleted file mode 100644 index 28d0a223..00000000 --- a/include/boost/fusion/adapted/class/extension.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2009 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#if !defined(FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM) -#define FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM - -#include - -namespace boost { namespace fusion { namespace extension -{ - template - struct class_member; - - template - struct class_size; - - template - struct class_member : class_member {}; - //~ { - //~ typedef typename class_member::type type; - //~ typedef typename class_member::get_type get_type; - //~ typedef typename class_member::proxy proxy; - - //~ static get_type& - //~ call(Class const& class_) - //~ { - //~ return class_member::call( - //~ const_cast(class_)); - //~ } - //~ }; - - template - struct class_size - : class_size - {}; - - struct no_such_member; - - template - struct class_assoc_member - { - typedef no_such_member type; - }; - - template - struct class_assoc_member - { - typedef typename - add_const::type>::type - type; - - static type& - call(Class const& class_) - { - return class_assoc_member::call( - const_cast(class_)); - } - }; - -}}} - -#endif - - diff --git a/include/boost/fusion/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/adapted/mpl/mpl_iterator.hpp index c99b5804..9c82028a 100644 --- a/include/boost/fusion/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/adapted/mpl/mpl_iterator.hpp @@ -80,7 +80,7 @@ namespace boost { namespace fusion type; static type - call(Iterator const& i) + call(Iterator const& /*i*/) { return type(); } diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index c6c991d1..865d9284 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -34,9 +34,9 @@ #include #include -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z)\ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z) \ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1 -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z)\ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z) \ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0_END #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1_END @@ -59,7 +59,7 @@ TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE) + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE) #define BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \ TEMPLATE_PARAMS_SEQ, NAME_SEQ, ATTRIBUTES) \ @@ -68,6 +68,7 @@ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ assoc_struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) @@ -76,6 +77,16 @@ (0), \ (0)(NAME), \ assoc_struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp index d4c3cdc2..996c9f47 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp @@ -11,11 +11,12 @@ #include #include -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ - \ - BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE) +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0(X, Y, Z) \ + (X, obj.Y, Z) BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1(X, Y, Z) \ + (X, obj.Y, Z) BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0_END +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_1_END #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ @@ -23,13 +24,10 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_STRUCT_BASE( \ - (0), \ - (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ - (0)NAMESPACE_SEQ)NAME), \ - assoc_struct_tag, \ - BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ - BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C) + BOOST_FUSION_ADAPT_ASSOC_STRUCT_AS_VIEW( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + BOOST_PP_CAT( \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_FILLER_0 ATTRIBUTES,_END)) #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp index 0758af53..066da8aa 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -38,13 +38,14 @@ #define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\ BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE,2) + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2) #define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \ BOOST_FUSION_ADAPT_STRUCT_BASE( \ (1)TEMPLATE_PARAMS_SEQ, \ (1)NAME_SEQ, \ struct_tag, \ + 0, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_STRUCT_C) @@ -53,6 +54,16 @@ (0), \ (0)(NAME), \ struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) + +#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 1, \ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ BOOST_FUSION_ADAPT_STRUCT_C) diff --git a/include/boost/fusion/adapted/struct/adapt_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp index 37ea1af1..ef13be02 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct_named.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp @@ -14,11 +14,12 @@ #include #include -#define BOOST_FUSION_ADAPT_STRUCT_NAMED_C( \ - TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \ - \ - BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE, 2) +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0(X, Y) \ + (X, obj.Y) BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1 +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1(X, Y) \ + (X, obj.Y) BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0 +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0_END +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_1_END #define BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ @@ -26,13 +27,9 @@ BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ \ - BOOST_FUSION_ADAPT_STRUCT_BASE( \ - (0), \ - (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ - (0)NAMESPACE_SEQ)NAME), \ - struct_tag, \ - BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ - BOOST_FUSION_ADAPT_STRUCT_NAMED_C) + BOOST_FUSION_ADAPT_STRUCT_AS_VIEW( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_NAMED_FILLER_0 ATTRIBUTES,_END)) #define BOOST_FUSION_ADAPT_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ diff --git a/include/boost/fusion/adapted/struct/detail/adapt_base.hpp b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp index c1b1b923..b2d81cf8 100644 --- a/include/boost/fusion/adapted/struct/detail/adapt_base.hpp +++ b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -116,7 +117,7 @@ static type \ call(Seq& seq) \ { \ - return seq.PREFIX \ + return seq.PREFIX() \ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \ } \ }; \ @@ -141,7 +142,12 @@ }; #define BOOST_FUSION_ADAPT_STRUCT_BASE( \ - TEMPLATE_PARAMS_SEQ,NAME_SEQ,TAG,ATTRIBUTES_SEQ,ATTRIBUTES_CALLBACK) \ + TEMPLATE_PARAMS_SEQ, \ + NAME_SEQ, \ + TAG, \ + IS_VIEW, \ + ATTRIBUTES_SEQ, \ + ATTRIBUTES_CALLBACK) \ \ namespace boost \ { \ @@ -169,6 +175,16 @@ namespace boost > \ struct struct_size \ : mpl::int_ \ + {}; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_is_view< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + > \ + : mpl::BOOST_PP_IF(IS_VIEW,true_,false_) \ {}; \ } \ } \ diff --git a/include/boost/fusion/adapted/struct/detail/define_struct.hpp b/include/boost/fusion/adapted/struct/detail/define_struct.hpp index 42bc6dcd..5f761463 100644 --- a/include/boost/fusion/adapted/struct/detail/define_struct.hpp +++ b/include/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -42,7 +43,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I( \ R, ATTRIBUTE_TUPEL_SIZE, I_, ATTRIBUTE) \ \ - BOOST_PP_IF( \ + BOOST_PP_EXPR_IF( \ I_, \ typedef typename \ boost::fusion::result_of::next< \ @@ -50,9 +51,8 @@ >::type \ BOOST_PP_CAT(I,I_); \ BOOST_PP_CAT(I,I_) BOOST_PP_CAT(i,I_)= \ - boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_)));, \ - BOOST_PP_EMPTY() \ - ) \ + boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_))); \ + ) \ \ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)= \ boost::fusion::deref(BOOST_PP_CAT(i,I_)); diff --git a/include/boost/fusion/adapted/struct/detail/extension.hpp b/include/boost/fusion/adapted/struct/detail/extension.hpp index 4896859d..2ba3bf70 100644 --- a/include/boost/fusion/adapted/struct/detail/extension.hpp +++ b/include/boost/fusion/adapted/struct/detail/extension.hpp @@ -33,11 +33,15 @@ namespace boost { namespace fusion template struct struct_member_name; + template + struct struct_size; + + template + struct struct_is_view; + template struct struct_assoc_key; - template - struct struct_size; } }} diff --git a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp index 0580018d..eae0b364 100644 --- a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp @@ -10,8 +10,6 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP -#include - namespace boost { namespace fusion { namespace extension { template @@ -22,7 +20,7 @@ namespace boost { namespace fusion { namespace extension { template struct apply - : mpl::false_ + : struct_is_view::type> {}; }; diff --git a/include/boost/fusion/adapted/struct/detail/proxy_type.hpp b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp index 062f24a1..bf0a6ebd 100644 --- a/include/boost/fusion/adapted/struct/detail/proxy_type.hpp +++ b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp @@ -18,11 +18,14 @@ \ struct NAME \ { \ - NAME(WRAPPED_TYPE& obj) \ - : obj(obj) \ + NAME(WRAPPED_TYPE& in_obj) \ + : obj(in_obj) \ {} \ \ WRAPPED_TYPE& obj; \ + \ + private: \ + NAME& operator= (NAME const&); \ }; \ \ BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) diff --git a/include/boost/fusion/algorithm/iteration.hpp b/include/boost/fusion/algorithm/iteration.hpp index 5d0fefa0..c94d4786 100644 --- a/include/boost/fusion/algorithm/iteration.hpp +++ b/include/boost/fusion/algorithm/iteration.hpp @@ -10,5 +10,8 @@ #include #include #include +#include +#include +#include #endif diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index 3d0685f7..aa52a99b 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -22,14 +22,14 @@ namespace boost { namespace fusion } template - inline typename result_of::accumulate::type + inline typename result_of::accumulate::type accumulate(Sequence& seq, State const& state, F f) { return fusion::fold(seq, state, f); } template - inline typename result_of::accumulate::type + inline typename result_of::accumulate::type accumulate(Sequence const& seq, State const& state, F f) { return fusion::fold(seq, state, f); diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index 62a677de..3ce672b3 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -1,278 +1,434 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_FOLD_HPP_20070528_1253) -#define BOOST_FUSION_FOLD_HPP_20070528_1253 -#include -#include -#include -#include +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP + +#include #include #include +#include +#include +#include #include #include +#include #include -#include +#include +#include +#include +#include #include - #include #include -namespace boost { namespace fusion { -namespace result_of -{ - template - struct fold; -} -namespace detail -{ - template - struct apply_fold_result - { - template - struct apply - : boost::result_of - {}; - }; - - template - struct fold_apply - { - typedef typename result_of::deref::type dereferenced; - typedef typename add_reference::type>::type lvalue_state; - typedef typename boost::result_of::type type; - }; - - template - struct static_fold; - - template - struct next_result_of_fold - { - typedef typename - static_fold< - typename result_of::next::type - , Last - , typename fold_apply::type - , F - >::type - type; - }; - - template - struct static_fold - { - typedef typename - mpl::if_< - result_of::equal_to - , mpl::identity - , next_result_of_fold - >::type - result; - - typedef typename result::type type; - }; - - template - struct result_of_unrolled_fold; - - template - struct unrolled_fold - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - typedef typename result_of::next::type I2; - I2 i2 = fusion::next(i1); - typedef typename result_of::next::type I3; - I3 i3 = fusion::next(i2); - typedef typename result_of::next::type I4; - I4 i4 = fusion::next(i3); - - return unrolled_fold::call(f(f(f(f(state, *i0), *i1), *i2), *i3), i4, f); - } - }; - - template<> - struct unrolled_fold<3> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - typedef typename result_of::next::type I2; - I2 i2 = fusion::next(i1); - return f(f(f(state, *i0), *i1), *i2); - } - }; - - template<> - struct unrolled_fold<2> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - typedef typename result_of::next::type I1; - I1 i1 = fusion::next(i0); - return f(f(state, *i0), *i1); - } - }; - - template<> - struct unrolled_fold<1> - { - template - static typename result_of_unrolled_fold::type - call(State const& state, I0 const& i0, F f) - { - return f(state, *i0); - } - }; - - template<> - struct unrolled_fold<0> - { - template - static State call(State const& state, I0 const&, F) - { - return state; - } - }; - - // terminal case - template - inline State const& - linear_fold(First const&, Last const&, State const& state, F, mpl::true_) - { - return state; - } - - // non-terminal case - template - inline typename static_fold::type - linear_fold( - First const& first - , Last const& last - , State const& state - , F f - , mpl::false_) - { - return detail::linear_fold( - fusion::next(first) - , last - , f(state, *first) - , f - , result_of::equal_to::type, Last>() - ); - } - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename result_of::next::type I2; - typedef typename result_of::next::type I3; - typedef typename result_of::next::type I4; - typedef typename fold_apply::type Rest1; - typedef typename fold_apply::type Rest2; - typedef typename fold_apply::type Rest3; - typedef typename fold_apply::type Rest4; - - typedef typename result_of_unrolled_fold::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename result_of::next::type I2; - typedef typename fold_apply::type Rest; - typedef typename fold_apply::type Rest2; - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename result_of::next::type I1; - typedef typename fold_apply::type Rest; - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef typename fold_apply::type type; - }; - - template - struct result_of_unrolled_fold - { - typedef State type; - }; - - template - struct choose_fold; - - template - struct choose_fold - { - typedef typename result_of::begin::type begin; - typedef typename result_of::end::type end; - typedef typename result_of_unrolled_fold< - State, begin, F, result_of::distance::type::value>::type type; - }; - - template - struct choose_fold - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; - - template - typename result_of::fold::type - fold(Sequence& seq, State const& state, F f, Tag) - { - return linear_fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); - } - - template - typename result_of::fold::type - fold(Sequence& seq, State const& state, F f, random_access_traversal_tag) - { - typedef typename result_of::begin::type begin; - typedef typename result_of::end::type end; - return unrolled_fold::type::value>::call( - state - , fusion::begin(seq) - , f); - } -}}} - #endif + +#ifdef BOOST_FUSION_REVERSE_FOLD +# ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_NAME reverse_iter_fold +# else +# define BOOST_FUSION_FOLD_NAME reverse_fold +# endif + +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION end +# define BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION prior +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(IT) \ + typename fusion::result_of::prior::type +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(IT) fusion::prior(IT) +#else +# ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_NAME iter_fold +# else +# define BOOST_FUSION_FOLD_NAME fold +# endif + +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION begin +# define BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION next +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(IT) IT +# define BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(IT) IT +#endif +#ifdef BOOST_FUSION_ITER_FOLD +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(IT) IT& +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(IT) IT +#else +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(IT) \ + typename fusion::result_of::deref::type +# define BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(IT) fusion::deref(IT) +#endif + +namespace boost { namespace fusion +{ + namespace detail + { + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state) + : boost::result_of< + F( + typename add_reference::type>::type, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM(It)) + > + {}; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + It1; + It1 it1 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It1 + >::type + It2; + It2 it2 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It2 + >::type + It3; + It3 it3 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it2); + + return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)< + Result + , N-4 + >::call( + f( + f( + f( + f( + state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + it0) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it2) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it3) + ), + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it3), + f); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + It1; + It1 it1 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0); + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It1 + >::type + It2; + It2 it2 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1); + + return f( + f( + f( + state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1) + ), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1) + )); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return f( + f(state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0)), + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM( + fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0))); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return f(state, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0)); + } + }; + + template + struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) + { + template + static Result + call(State const& state,It0 const& it0,F f) + { + return static_cast(state); + } + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME) + { + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + rest1; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + it1; + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest1 + , it1 + , F + >::type + rest2; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION::type + it2; + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest2 + , it2 + , F + >::type + rest3; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION::type + it3; + + typedef typename + BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + typename BOOST_PP_CAT( + BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest3 + , it3 + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + it3 + >::type + , F + , N-4 + >::type + type; + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 3 + > + { + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + rest1; + typedef typename + result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + it1; + + typedef typename + BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + typename BOOST_PP_CAT( + BOOST_FUSION_FOLD_NAME, _rvalue_state)< + rest1 + , it1 + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + it1 const + >::type const + , F + >::type + type; + }; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 2 + > + : BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + typename BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type const + , F + > + {}; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 1 + > + : BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _rvalue_state)< + StateRef + , It0 const + , F + > + {}; + + template + struct BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + StateRef + , It0 + , F + , 0 + > + { + typedef StateRef type; + }; + + template + struct BOOST_PP_CAT(result_of_first_unrolled,BOOST_FUSION_FOLD_NAME) + { + typedef typename + BOOST_PP_CAT(result_of_unrolled_,BOOST_FUSION_FOLD_NAME)< + typename boost::result_of< + F( + StateRef, + BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM( + It0 const) + ) + >::type + , typename result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION< + It0 const + >::type + , F + , SeqSize-1 + >::type + type; + }; + + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl) + { + typedef typename + BOOST_PP_CAT( + result_of_first_unrolled,BOOST_FUSION_FOLD_NAME)< + StateRef + , BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM(It0) + , F + , SeqSize + >::type + type; + + static type + call(StateRef state, It0 const& it0, F f) + { + return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)< + type + , SeqSize + >::call(state,BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM(it0),f); + } + }; + + template + struct BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl)<0,StateRef,It0,F> + { + typedef StateRef type; + + static StateRef + call(StateRef state, It0 const&, F) + { + return static_cast(state); + } + }; + } + + namespace result_of + { + template + struct BOOST_FUSION_FOLD_NAME + : detail::BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME,_impl)< + size::value + , typename add_reference< + typename add_const::type + >::type + , typename BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION::type + , F + > + {}; + } + + template + inline typename result_of::fold::type + BOOST_FUSION_FOLD_NAME(Seq& seq,State const& state,F f) + { + return result_of::BOOST_FUSION_FOLD_NAME::call( + state, + fusion::BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION(seq), + f); + } + + template + inline typename result_of::fold::type + BOOST_FUSION_FOLD_NAME(Seq const& seq,State const& state,F f) + { + return result_of::BOOST_FUSION_FOLD_NAME::call( + state, + fusion::BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION(seq), + f); + } +}} + +#undef BOOST_FUSION_FOLD_NAME +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_FUNCTION +#undef BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_META_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_FIRST_IT_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_INVOKE_IT_META_TRANSFORM +#undef BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index 75c63b8f..347fb4f1 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -1,48 +1,15 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2007 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_FOLD_05052005_1214) -#define BOOST_FUSION_FOLD_05052005_1214 + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP #include -#include -#include - -#include -#include - -namespace boost { namespace fusion { - - struct random_access_traversal_tag; - - namespace result_of - { - template - struct fold - : fusion::detail::choose_fold< - Sequence, State, F - , is_base_of::type>::value> - {}; - } - - template - inline typename result_of::fold::type - fold(Sequence& seq, State const& state, F f) - { - return detail::fold(seq, state, f, typename traits::category_of::type()); - } - - template - inline typename result_of::fold::type - fold(Sequence const& seq, State const& state, F f) - { - return detail::fold(seq, state, f, typename traits::category_of::type()); - } -}} #endif - diff --git a/include/boost/fusion/algorithm/iteration/iter_fold.hpp b/include/boost/fusion/algorithm/iteration/iter_fold.hpp new file mode 100644 index 00000000..59cbfd8c --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/iter_fold.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP + +#define BOOST_FUSION_ITER_FOLD + +#include + +#undef BOOST_FUSION_ITER_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/iteration/reverse_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp new file mode 100644 index 00000000..bb09db5d --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP + +#define BOOST_FUSION_REVERSE_FOLD + +#include + +#undef BOOST_FUSION_REVERSE_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp new file mode 100644 index 00000000..80079f48 --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP +#define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP + +#define BOOST_FUSION_REVERSE_FOLD +#define BOOST_FUSION_ITER_FOLD + +#include + +#undef BOOST_FUSION_REVERSE_FOLD +#undef BOOST_FUSION_ITER_FOLD + +#endif diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index 51fd393f..c9284e86 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -106,7 +106,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<0> { template - static bool call(It const& it, F f) + static bool call(It const& /*it*/, F /*f*/) { return true; } diff --git a/include/boost/fusion/algorithm/query/detail/count.hpp b/include/boost/fusion/algorithm/query/detail/count.hpp index ff17adbd..6c4254c3 100644 --- a/include/boost/fusion/algorithm/query/detail/count.hpp +++ b/include/boost/fusion/algorithm/query/detail/count.hpp @@ -7,10 +7,16 @@ #if !defined(FUSION_COUNT_09162005_0158) #define FUSION_COUNT_09162005_0158 +#include #include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { namespace detail { template @@ -44,8 +50,8 @@ namespace boost { namespace fusion { namespace detail struct count_compare { typedef typename detail::call_param::type param; - count_compare(param x) - : x(x) {} + count_compare(param in_x) + : x(in_x) {} template bool @@ -64,5 +70,9 @@ namespace boost { namespace fusion { namespace detail }; }}} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index c9f849cb..992a76ee 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion template inline typename result_of::clear::type - clear(Sequence const& seq) + clear(Sequence const& /*seq*/) { return vector0<>(); } diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp index 9e20f79f..8005aad0 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion { namespace detail template struct replacer { - replacer(T const& old_value, T const& new_value) - : old_value(old_value), new_value(new_value) {} + replacer(T const& in_old_value, T const& in_new_value) + : old_value(in_old_value), new_value(in_new_value) {} template struct result; diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp index db0434c6..fa6068aa 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion { namespace detail template struct replacer_if { - replacer_if(F f, T const& new_value) - : f(f), new_value(new_value) {} + replacer_if(F in_f, T const& in_new_value) + : f(in_f), new_value(in_new_value) {} template struct result; diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 01f017e9..b5c9edd8 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -68,7 +68,7 @@ namespace boost { namespace fusion { {} template - deque(Sequence const& seq, typename disable_if >::type* dummy = 0) + deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp index c6e46d54..7a2fcf45 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -100,6 +100,10 @@ namespace boost { namespace fusion { {}; Seq& seq_; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + deque_iterator& operator= (deque_iterator const&); }; }} diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index 8e500f66..e2745616 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -46,11 +46,11 @@ namespace boost { namespace fusion nil() {} template - nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) + nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) {} template - void assign_from_iter(Iterator const& iter) + void assign_from_iter(Iterator const& /*iter*/) { } }; @@ -69,13 +69,13 @@ namespace boost { namespace fusion cons() : car(), cdr() {} - explicit cons(typename detail::call_param::type car) - : car(car), cdr() {} + explicit cons(typename detail::call_param::type in_car) + : car(in_car), cdr() {} cons( - typename detail::call_param::type car - , typename detail::call_param::type cdr) - : car(car), cdr(cdr) {} + typename detail::call_param::type in_car + , typename detail::call_param::type in_cdr) + : car(in_car), cdr(in_cdr) {} template cons(cons const& rhs) @@ -92,7 +92,7 @@ namespace boost { namespace fusion is_convertible // use copy ctor instead , is_convertible // use copy to car instead > - >::type* dummy = 0 + >::type* /*dummy*/ = 0 ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp index 9d67a649..1eff1535 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -35,8 +35,8 @@ namespace boost { namespace fusion typename add_const::type> identity; - explicit cons_iterator(cons_type& cons) - : cons(cons) {} + explicit cons_iterator(cons_type& in_cons) + : cons(in_cons) {} cons_type& cons; diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index e8284ca8..8eaa6a6f 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -111,7 +111,7 @@ namespace boost { namespace fusion typename add_reference< typename mpl::at::type >::type - at_impl(I index) + at_impl(I /*index*/) { return vec.at_impl(mpl::int_()); } @@ -122,7 +122,7 @@ namespace boost { namespace fusion typename mpl::at::type >::type >::type - at_impl(I index) const + at_impl(I /*index*/) const { return vec.at_impl(mpl::int_()); } diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp index 929815ab..f1af70d7 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -52,7 +52,7 @@ namespace boost { namespace fusion vector0() {} template - vector0(Sequence const& seq) + vector0(Sequence const& /*seq*/) {} }; diff --git a/include/boost/fusion/container/vector/vector_iterator.hpp b/include/boost/fusion/container/vector/vector_iterator.hpp index d7ba8c88..8faa13ad 100644 --- a/include/boost/fusion/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/container/vector/vector_iterator.hpp @@ -7,11 +7,6 @@ #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) #define FUSION_VECTOR_ITERATOR_05042005_0635 -#if defined (BOOST_MSVC) -# pragma warning(push) -# pragma warning (disable: 4512) // assignment operator could not be generated. -#endif - #include #include #include @@ -41,15 +36,15 @@ namespace boost { namespace fusion typedef vector_iterator_identity< typename add_const::type, N> identity; - vector_iterator(Vector& vec) - : vec(vec) {} + vector_iterator(Vector& in_vec) + : vec(in_vec) {} Vector& vec; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + vector_iterator& operator= (vector_iterator const&); }; }} -#if defined (BOOST_MSVC) -# pragma warning(pop) -#endif - #endif diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 08e8897a..91ae1f2c 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused; @@ -81,5 +87,9 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index 12cd1e27..da8ac99b 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused_function_object; @@ -86,5 +92,9 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp index 78034b97..10c7c7a0 100644 --- a/include/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -10,10 +10,16 @@ #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED #include +#include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template class fused_procedure; @@ -66,5 +72,9 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/functional/adapter/unfused.hpp b/include/boost/fusion/functional/adapter/unfused.hpp index 48baf756..b0d02bc4 100755 --- a/include/boost/fusion/functional/adapter/unfused.hpp +++ b/include/boost/fusion/functional/adapter/unfused.hpp @@ -17,11 +17,18 @@ #include +#include + #include #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template @@ -87,6 +94,10 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + namespace boost { template diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 9ee3a7a6..0f19f28f 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -28,6 +28,11 @@ #include #include +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { @@ -69,6 +74,10 @@ namespace boost { namespace fusion }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + namespace boost { template diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index f021d923..085beb7e 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -199,6 +199,8 @@ namespace boost { namespace fusion Function(BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M +#if N > 0 + template static inline result_type call(F & f, Sequence & s) @@ -206,6 +208,17 @@ namespace boost { namespace fusion #define M(z,j,data) fusion::at_c(s) return f( BOOST_PP_ENUM(N,M,~) ); } + +#else + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; @@ -245,16 +258,28 @@ namespace boost { namespace fusion Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) >::type result_type; +#if N > 0 + template static inline result_type call(F & f, Sequence & s) { -#if N > 0 typename seq::I0 i0 = fusion::begin(s); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) -#endif return f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; #if N > 0 diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index 24c02c2b..81c33f92 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -118,6 +118,8 @@ namespace boost { namespace fusion Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M +#if N > 0 + template static inline result_type call(F & f, Sequence & s) @@ -126,6 +128,18 @@ namespace boost { namespace fusion return f( BOOST_PP_ENUM(N,M,~) ); #undef M } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; template @@ -138,20 +152,32 @@ namespace boost { namespace fusion Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T)) >::type result_type; +#if N > 0 + template static inline result_type call(F & f, Sequence & s) { -#if N > 0 typename seq::I0 i0 = fusion::begin(s); #define M(z,j,data) \ typename seq::I##j i##j = \ fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j))); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) #undef M -#endif return f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + + template + static inline result_type + call(F & f, Sequence & /*s*/) + { + return f(); + } + +#endif + }; template diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 502b38aa..ddb5e506 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -106,10 +106,23 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + +#if N > 0 + static inline void call(Function & f, Sequence & s) { f(BOOST_PP_ENUM(N,M,~)); } + +#else + + static inline void call(Function & f, Sequence & /*s*/) + { + f(); + } + +#endif + }; #if N > 0 @@ -135,15 +148,25 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + +#if N > 0 + static inline void call(Function & f, Sequence & s) { -#if N > 0 typedef typename result_of::begin::type I0; I0 i0 = fusion::begin(s); BOOST_PP_REPEAT_FROM_TO(1,N,M,~) -#endif f( BOOST_PP_ENUM_PARAMS(N,*i) ); } + +#else + static inline void call(Function & f, Sequence & /*s*/) + { + f(); + } + +#endif + }; #if N > 0 diff --git a/include/boost/fusion/include/has_key.hpp b/include/boost/fusion/include/has_key.hpp index 4eef64a1..b696241d 100644 --- a/include/boost/fusion/include/has_key.hpp +++ b/include/boost/fusion/include/has_key.hpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_INCLUDE_HAS_KEY) -#define FUSION_INCLUDE_EMPTY +#define FUSION_INCLUDE_HAS_KEY #include diff --git a/include/boost/fusion/include/iter_fold.hpp b/include/boost/fusion/include/iter_fold.hpp new file mode 100644 index 00000000..ba6f9b7e --- /dev/null +++ b/include/boost/fusion/include/iter_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ITER_FOLD_HPP +#define BOOST_FUSION_INCLUDE_ITER_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/reverse_fold.hpp b/include/boost/fusion/include/reverse_fold.hpp new file mode 100644 index 00000000..f2379e67 --- /dev/null +++ b/include/boost/fusion/include/reverse_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP +#define BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/reverse_iter_fold.hpp b/include/boost/fusion/include/reverse_iter_fold.hpp new file mode 100644 index 00000000..ba92d5fe --- /dev/null +++ b/include/boost/fusion/include/reverse_iter_fold.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP +#define BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP + +#include + +#endif diff --git a/include/boost/fusion/iterator/basic_iterator.hpp b/include/boost/fusion/iterator/basic_iterator.hpp index 33c514f3..4327a8ce 100644 --- a/include/boost/fusion/iterator/basic_iterator.hpp +++ b/include/boost/fusion/iterator/basic_iterator.hpp @@ -122,8 +122,8 @@ namespace boost { namespace fusion : seq(it.seq) {} - basic_iterator(Seq& seq, int) - : seq(&seq) + basic_iterator(Seq& in_seq, int) + : seq(&in_seq) {} template diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp index 5716ce4e..6cec5104 100644 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion } static mpl_iterator - call(T const& x, mpl::false_) + call(T const& /*x*/, mpl::false_) { return mpl_iterator(); } diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp index 150db549..b18ef8f0 100644 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -16,6 +16,27 @@ #include #include #include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + +template +struct to_mpl_category { + typedef typename mpl::eval_if< + is_base_of, + mpl::random_access_iterator_tag, + mpl::eval_if< + is_base_of, + mpl::bidirectional_iterator_tag, + mpl::forward_iterator_tag + > + >::type type; +}; + +}}} namespace boost { namespace mpl { @@ -23,7 +44,8 @@ namespace boost { namespace mpl struct fusion_iterator { typedef typename fusion::result_of::value_of::type type; - typedef typename fusion::traits::category_of::type category; + typedef typename fusion::traits::category_of::type fusion_category; + typedef typename fusion::detail::to_mpl_category::type category; typedef Iterator iterator; }; diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp index 6c78408a..40cd96f4 100644 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -50,7 +50,7 @@ namespace boost { namespace fusion { namespace detail { template static bool - call(I1 const& a, I2 const& b) + call(I1 const& /*a*/, I2 const& /*b*/) { return false; } diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index fb27f15c..0c8a37e4 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -13,6 +13,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4100) // unreferenced formal parameter +#endif namespace boost { namespace fusion { @@ -43,4 +49,8 @@ namespace boost { namespace fusion using operators::operator==; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index cf285714..a4ad4ee5 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -10,6 +10,12 @@ #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -99,4 +105,8 @@ namespace boost { namespace fusion } }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index a8e2ed07..cba06067 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -46,39 +46,6 @@ namespace boost { namespace fusion namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) - - template - struct is_specialized - : mpl::false_ - {}; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - struct is_specialized > - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; - - template <> - struct is_specialized - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; - - template - struct is_specialized > - : mpl::true_ - {}; } namespace traits @@ -88,9 +55,7 @@ namespace boost { namespace fusion : mpl::if_< fusion::detail::is_mpl_sequence, mpl::identity, mpl::identity >::type - { - BOOST_MPL_ASSERT_NOT((fusion::detail::is_specialized)); - }; + {}; template struct tag_of >::type> diff --git a/include/boost/fusion/view.hpp b/include/boost/fusion/view.hpp index 12d5cc5d..f1d837cf 100644 --- a/include/boost/fusion/view.hpp +++ b/include/boost/fusion/view.hpp @@ -10,8 +10,10 @@ #include #include #include -#include +#include +#include #include +#include #include #endif diff --git a/include/boost/fusion/view/filter_view/filter_view.hpp b/include/boost/fusion/view/filter_view/filter_view.hpp index 69f17329..76ce031a 100644 --- a/include/boost/fusion/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/view/filter_view/filter_view.hpp @@ -21,7 +21,6 @@ #include #include - namespace boost { namespace fusion { struct filter_view_tag; @@ -46,8 +45,8 @@ namespace boost { namespace fusion typedef typename result_of::end::type last_type; typedef Pred pred_type; - filter_view(Sequence& seq) - : seq(seq) + filter_view(Sequence& in_seq) + : seq(in_seq) {} first_type first() const { return fusion::begin(seq); } diff --git a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp index 5d1efc87..8ce63cbd 100644 --- a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -54,10 +54,14 @@ namespace boost { namespace fusion typedef last_iter last_type; typedef Pred pred_type; - filter_iterator(First const& first) - : first(filter::call(first_converter::call(first))) {} + filter_iterator(First const& in_first) + : first(filter::call(first_converter::call(in_first))) {} first_type first; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + filter_iterator& operator= (filter_iterator const&); }; }} diff --git a/include/boost/fusion/view/iterator_range/iterator_range.hpp b/include/boost/fusion/view/iterator_range/iterator_range.hpp index 14bb2457..4d16ca6c 100644 --- a/include/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/iterator_range.hpp @@ -17,6 +17,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -35,15 +41,19 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; - iterator_range(First const& first, Last const& last) - : first(convert_iterator::call(first)) - , last(convert_iterator::call(last)) {} + iterator_range(First const& in_first, Last const& in_last) + : first(convert_iterator::call(in_first)) + , last(convert_iterator::call(in_last)) {} begin_type first; end_type last; }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/joint_view/joint_view.hpp b/include/boost/fusion/view/joint_view/joint_view.hpp index 48d912cd..e0d5c090 100644 --- a/include/boost/fusion/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/view/joint_view/joint_view.hpp @@ -52,9 +52,9 @@ namespace boost { namespace fusion typedef typename result_of::end::type concat_last_type; typedef typename mpl::plus, result_of::size >::type size; - joint_view(Sequence1& seq1, Sequence2& seq2) - : seq1(seq1) - , seq2(seq2) + joint_view(Sequence1& in_seq1, Sequence2& in_seq2) + : seq1(in_seq1) + , seq2(in_seq2) {} first_type first() const { return fusion::begin(seq1); } @@ -62,6 +62,8 @@ namespace boost { namespace fusion concat_last_type concat_last() const { return fusion::end(seq2); } private: + // silence MSVC warning C4512: assignment operator could not be generated + joint_view& operator= (joint_view const&); typename mpl::if_, Sequence1, Sequence1&>::type seq1; typename mpl::if_, Sequence2, Sequence2&>::type seq2; diff --git a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp index 0fd4c636..79b4d115 100644 --- a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -40,13 +40,17 @@ namespace boost { namespace fusion typedef Category category; BOOST_STATIC_ASSERT((!result_of::equal_to::value)); - joint_view_iterator(First const& first, Concat const& concat) - : first(first_converter::call(first)) - , concat(concat_converter::call(concat)) + joint_view_iterator(First const& in_first, Concat const& in_concat) + : first(first_converter::call(in_first)) + , concat(concat_converter::call(in_concat)) {} first_type first; concat_type concat; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + joint_view_iterator& operator= (joint_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/nview/detail/distance_impl.hpp b/include/boost/fusion/view/nview/detail/distance_impl.hpp index 9bc860c5..8b1906f6 100644 --- a/include/boost/fusion/view/nview/detail/distance_impl.hpp +++ b/include/boost/fusion/view/nview/detail/distance_impl.hpp @@ -31,7 +31,7 @@ namespace boost { namespace fusion >::type type; static type - call(First const& first, Last const& last) + call(First const& /*first*/, Last const& /*last*/) { return type(); } diff --git a/include/boost/fusion/view/nview/nview_iterator.hpp b/include/boost/fusion/view/nview/nview_iterator.hpp index 4fc06a85..3b7ec1f9 100644 --- a/include/boost/fusion/view/nview/nview_iterator.hpp +++ b/include/boost/fusion/view/nview/nview_iterator.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef mpl_iterator first_type; - explicit nview_iterator(Sequence& seq) - : seq(seq) {} + explicit nview_iterator(Sequence& in_seq) + : seq(in_seq) {} Sequence& seq; diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp index 050affb1..509db859 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -37,10 +37,14 @@ namespace boost { namespace fusion mpl::if_, Sequence, sequence_type&>::type stored_seq_type; - repetitive_view(Sequence& seq) - : seq(seq) {} + repetitive_view(Sequence& in_seq) + : seq(in_seq) {} stored_seq_type seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + repetitive_view& operator= (repetitive_view const&); }; }} diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp index 9a7334de..4dff006e 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -35,15 +35,19 @@ namespace boost { namespace fusion typedef typename convert_iterator::type>::type end_type; typedef single_pass_traversal_tag category; - explicit repetitive_view_iterator(Sequence& seq) - : seq(seq), pos(begin(seq)) {} + explicit repetitive_view_iterator(Sequence& in_seq) + : seq(in_seq), pos(begin(in_seq)) {} - repetitive_view_iterator(Sequence& seq, pos_type const& pos) - : seq(seq), pos(pos) {} + repetitive_view_iterator(Sequence& in_seq, pos_type const& in_pos) + : seq(in_seq), pos(in_pos) {} Sequence& seq; pos_type pos; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + repetitive_view_iterator& operator= (repetitive_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/reverse_view/reverse_view.hpp b/include/boost/fusion/view/reverse_view/reverse_view.hpp index 19b51d13..f3e8ffea 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view.hpp @@ -49,13 +49,17 @@ namespace boost { namespace fusion bidirectional_traversal_tag , typename traits::category_of::type>::value)); - reverse_view(Sequence& seq) - : seq(seq) + reverse_view(Sequence& in_seq) + : seq(in_seq) {} first_type first() const { return fusion::begin(seq); } last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + reverse_view& operator= (reverse_view const&); }; }} diff --git a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp index af2267e3..ddf2e9be 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -41,10 +41,14 @@ namespace boost { namespace fusion bidirectional_traversal_tag , category>::value)); - reverse_view_iterator(First const& first) - : first(converter::call(first)) {} + reverse_view_iterator(First const& in_first) + : first(converter::call(in_first)) {} first_type first; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + reverse_view_iterator& operator= (reverse_view_iterator const&); }; }} diff --git a/include/boost/fusion/view/single_view/single_view.hpp b/include/boost/fusion/view/single_view/single_view.hpp index 7c10afe6..03087cd6 100644 --- a/include/boost/fusion/view/single_view/single_view.hpp +++ b/include/boost/fusion/view/single_view/single_view.hpp @@ -15,6 +15,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -35,8 +41,8 @@ namespace boost { namespace fusion single_view() : val() {} - explicit single_view(typename detail::call_param::type val) - : val(val) {} + explicit single_view(typename detail::call_param::type in_val) + : val(in_val) {} value_type val; }; @@ -49,6 +55,10 @@ namespace boost { namespace fusion } }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/single_view/single_view_iterator.hpp b/include/boost/fusion/view/single_view/single_view_iterator.hpp index 1a44bb15..fa249015 100644 --- a/include/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/view/single_view/single_view_iterator.hpp @@ -12,6 +12,12 @@ #include #include #include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -42,6 +48,10 @@ namespace boost { namespace fusion }; }} +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + #endif diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp index 78b6560e..3d330b76 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -55,10 +55,10 @@ namespace boost { namespace fusion typedef Sequence2 sequence2_type; typedef F transform_type; - transform_view(Sequence1& seq1, Sequence2& seq2, F const& binop) + transform_view(Sequence1& in_seq1, Sequence2& in_seq2, F const& binop) : f(binop) - , seq1(seq1) - , seq2(seq2) + , seq1(in_seq1) + , seq2(in_seq2) {} first1_type first1() const { return fusion::begin(seq1); } @@ -69,6 +69,10 @@ namespace boost { namespace fusion transform_type f; typename mpl::if_, Sequence1, Sequence1&>::type seq1; typename mpl::if_, Sequence2, Sequence2&>::type seq2; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + transform_view& operator= (transform_view const&); }; // Unary Version @@ -90,9 +94,9 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef F transform_type; - transform_view(Sequence& seq, F const& f) - : seq(seq) - , f(f) + transform_view(Sequence& in_seq, F const& in_f) + : seq(in_seq) + , f(in_f) {} first_type first() const { return fusion::begin(seq); } diff --git a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp index fde67323..2c31b261 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -34,8 +34,8 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; - transform_view_iterator(First const& first, F const& f) - : first(converter::call(first)), f(f) {} + transform_view_iterator(First const& in_first, F const& in_f) + : first(converter::call(in_first)), f(in_f) {} first_type first; transform_type f; @@ -60,8 +60,8 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; - transform_view_iterator2(First1 const& first1, First2 const& first2, F const& f) - : first1(converter1::call(first1)), first2(converter2::call(first2)), f(f) {} + transform_view_iterator2(First1 const& in_first1, First2 const& in_first2, F const& in_f) + : first1(converter1::call(in_first1)), first2(converter2::call(in_first2)), f(in_f) {} first1_type first1; first2_type first2; diff --git a/include/boost/fusion/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/view/zip_view/detail/distance_impl.hpp index 61447278..b2febd5b 100644 --- a/include/boost/fusion/view/zip_view/detail/distance_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/distance_impl.hpp @@ -70,7 +70,7 @@ namespace boost { namespace fusion { : detail::zip_view_iterator_distance::type { static typename detail::zip_view_iterator_distance::type - call(It1 const& it1, It2 const& it2) + call(It1 const& /*it1*/, It2 const& /*it2*/) { return typename detail::zip_view_iterator_distance::type(); } diff --git a/test/Jamfile b/test/Jamfile index 2ddf7912..dba81ec5 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -23,9 +23,11 @@ import testing ; [ run algorithm/find.cpp : : : : ] [ run algorithm/find_if.cpp : : : : ] [ run algorithm/fold.cpp : : : : ] + [ run algorithm/fold2.cpp : : : : ] [ run algorithm/for_each.cpp : : : : ] [ run algorithm/insert.cpp : : : : ] [ run algorithm/insert_range.cpp : : : : ] + [ run algorithm/iter_fold.cpp : : : : ] [ run algorithm/none.cpp : : : : ] [ run algorithm/pop_back.cpp : : : : ] [ run algorithm/pop_front.cpp : : : : ] @@ -35,6 +37,8 @@ import testing ; [ run algorithm/remove_if.cpp : : : : ] [ run algorithm/replace.cpp : : : : ] [ run algorithm/replace_if.cpp : : : : ] + [ run algorithm/reverse_fold.cpp : : : : ] + [ run algorithm/reverse_iter_fold.cpp : : : : ] [ run algorithm/reverse.cpp : : : : ] [ run algorithm/transform.cpp : : : : ] [ run algorithm/join.cpp : : : : ] diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index a4c7f32c..7bfefdaa 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -16,8 +16,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 69f114f8..e2c42f8d 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -17,8 +17,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index ec51b406..38178c75 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -43,7 +43,7 @@ struct add_ints_only template State - operator()(State const& state, T const& x) const + operator()(State const& state, T const& /*x*/) const { return state; } @@ -81,8 +81,8 @@ struct count_ints typename result::type operator()(CountT const&, T const&) const { - typedef typename result::type result; - return result(); + typedef typename result::type result_; + return result_(); } }; diff --git a/test/algorithm/fold.hpp b/test/algorithm/fold.hpp new file mode 100644 index 00000000..df42d7d7 --- /dev/null +++ b/test/algorithm/fold.hpp @@ -0,0 +1,212 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mpl=boost::mpl; +namespace fusion=boost::fusion; + +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD +# ifdef BOOST_FUSION_TEST_ITER_FOLD +# define BOOST_FUSION_TEST_FOLD_NAME reverse_iter_fold +# else +# define BOOST_FUSION_TEST_FOLD_NAME reverse_fold +# endif +#else +# ifdef BOOST_FUSION_TEST_ITER_FOLD +# define BOOST_FUSION_TEST_FOLD_NAME iter_fold +# else +# define BOOST_FUSION_TEST_FOLD_NAME fold +# endif +#endif + +struct sum +{ + template + struct result; + + template + struct result + : fusion::result_of::make_pair< + mpl::int_< + boost::remove_reference< + State + >::type::first_type::value+1 + > + , int + > + { + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + }; + +#ifdef BOOST_FUSION_TEST_ITER_FOLD + template + typename result::type + operator()(State const& state, It const& it)const + { + static const int n=State::first_type::value; + return fusion::make_pair >( + state.second+fusion::deref(it)*n); + } +#else + template + typename result::type + operator()(State const& state, int const& e)const + { + static const int n=State::first_type::value; + return fusion::make_pair >(state.second+e*n); + } +#endif +}; + +struct meta_sum +{ + template + struct result; + + template + struct result + { + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + BOOST_MPL_ASSERT((typename boost::is_reference::type)); + + typedef typename boost::remove_reference::type state; + static const int n=mpl::front::type::value; + +#ifdef BOOST_FUSION_TEST_ITER_FOLD + typedef typename + fusion::result_of::value_of< + typename boost::remove_reference::type + >::type + t; +#else + typedef typename boost::remove_reference::type t; +#endif + + typedef + mpl::vector< + mpl::int_ + , mpl::int_< + mpl::back::type::value+t::value*n + > + > + type; + }; + + template + typename result::type + operator()(State const&, T const&)const; +}; + +struct fold_test_n +{ + template + void + operator()(I)const + { + static const int n=I::value; + typedef mpl::range_c range; + + static const int squares_sum=n*(n+1)*(2*n+1)/6; + + { + mpl::range_c init_range; + typename fusion::result_of::as_vector< + typename mpl::transform< + range + , mpl::always + , mpl::back_inserter > + >::type + >::type vec( +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD + fusion::reverse(init_range) +#else + init_range +#endif + ); + + int result=BOOST_FUSION_TEST_FOLD_NAME( + vec, + fusion::make_pair >(0), + sum()).second; + std::cout << n << ": " << result << std::endl; + BOOST_TEST(result==squares_sum); + } + + { + typedef typename +#ifdef BOOST_FUSION_TEST_REVERSE_FOLD + fusion::result_of::as_vector< + typename mpl::copy< + mpl::range_c + , mpl::front_inserter > + >::type + >::type +#else + fusion::result_of::as_vector >::type +#endif + vec; + + typedef + boost::is_same< + typename fusion::result_of::BOOST_FUSION_TEST_FOLD_NAME< + vec + , mpl::vector, mpl::int_<0> > + , meta_sum + >::type + , typename mpl::if_c< + !n + , mpl::vector, mpl::int_<0> > const& + , mpl::vector, mpl::int_ > + >::type + > + result_test; + + BOOST_MPL_ASSERT((result_test)); + } + } +}; + +int +main() +{ + mpl::for_each >(fold_test_n()); + + return boost::report_errors(); +} + +#undef BOOST_FUSION_TEST_FOLD_NAME + diff --git a/test/algorithm/fold2.cpp b/test/algorithm/fold2.cpp new file mode 100644 index 00000000..51ef975d --- /dev/null +++ b/test/algorithm/fold2.cpp @@ -0,0 +1,8 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include "fold.hpp" diff --git a/test/algorithm/iter_fold.cpp b/test/algorithm/iter_fold.cpp new file mode 100644 index 00000000..b37f90db --- /dev/null +++ b/test/algorithm/iter_fold.cpp @@ -0,0 +1,10 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_ITER_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_ITER_FOLD diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index ec5676b6..148ad652 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -16,8 +16,8 @@ namespace { struct search_for { - explicit search_for(int search) - : search(search) + explicit search_for(int in_search) + : search(in_search) {} template diff --git a/test/algorithm/reverse_fold.cpp b/test/algorithm/reverse_fold.cpp new file mode 100644 index 00000000..7742bca8 --- /dev/null +++ b/test/algorithm/reverse_fold.cpp @@ -0,0 +1,10 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_REVERSE_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_REVERSE_FOLD diff --git a/test/algorithm/reverse_iter_fold.cpp b/test/algorithm/reverse_iter_fold.cpp new file mode 100644 index 00000000..31e4cf26 --- /dev/null +++ b/test/algorithm/reverse_iter_fold.cpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#define BOOST_FUSION_TEST_REVERSE_FOLD +#define BOOST_FUSION_TEST_ITER_FOLD +#include "fold.hpp" +#undef BOOST_FUSION_TEST_ITER_FOLD +#undef BOOST_FUSION_TEST_REVERSE_FOLD diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp deleted file mode 100644 index 4dcc7449..00000000 --- a/test/functional/make_unfused_generic.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_generic< test_func<> >::type unfused_func = - fusion::make_unfused_generic(f); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_generic(ref(f_nc)); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_generic(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(const_(unfused_func)(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp deleted file mode 100644 index af94256c..00000000 --- a/test/functional/make_unfused_lvalue_args.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_lvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_lvalue_args(f); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_lvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_lvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(const_(unfused_func)(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp deleted file mode 100644 index 383fcc0b..00000000 --- a/test/functional/make_unfused_rvalue_args.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_rvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_rvalue_args(f); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_rvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_rvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(const_(unfused_func)(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp deleted file mode 100644 index f1f86515..00000000 --- a/test/functional/unfused_generic.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self (Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - - template - struct result; - - template struct result< Self(T0,T1) > - : mpl::identity - { }; - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_generic< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_generic< test_func<> > unfused_func; - fusion::unfused_generic< test_func & > unfused_func_ref(f); - fusion::unfused_generic< test_func<> const > unfused_func_c; - fusion::unfused_generic< test_func<> > const unfused_func_c2; - fusion::unfused_generic< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - // also test const lvalues to pick up compiler deficiencies in that area - int const clvalue_1 = 1; - long const clvalue_2 = 2; - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,clvalue_1,clvalue_2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_c(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c2(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 10*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp deleted file mode 100644 index e7972499..00000000 --- a/test/functional/unfused_lvalue_args.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_lvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_lvalue_args< test_func<> > unfused_func; - fusion::unfused_lvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_lvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_lvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_lvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c2(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+5*sizeof(lv1) && lv2 == 3+5*sizeof(lv2) && lv3 == 7+5*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp deleted file mode 100644 index 349bf7fa..00000000 --- a/test/functional/unfused_rvalue_args.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software - License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt). -==============================================================================*/ - -#include -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_rvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_rvalue_args< test_func<> > unfused_func; - fusion::unfused_rvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_rvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_rvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_rvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c2(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 2d49f77f..85783c86 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -15,6 +15,7 @@ #include #include +#include #include diff --git a/test/sequence/adapt_assoc_class.cpp b/test/sequence/adapt_assoc_class.cpp index cdbdd36b..67f1c657 100644 --- a/test/sequence/adapt_assoc_class.cpp +++ b/test/sequence/adapt_assoc_class.cpp @@ -31,7 +31,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -98,14 +98,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_class_named.cpp b/test/sequence/adapt_assoc_class_named.cpp index 8f6ec592..0979970c 100644 --- a/test/sequence/adapt_assoc_class_named.cpp +++ b/test/sequence/adapt_assoc_class_named.cpp @@ -31,7 +31,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -63,7 +63,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep(123, 456); adapted::point p(basep); @@ -102,7 +102,7 @@ main() // conversion from adapted::point to vector ns::point basep(5, 3); adapted::point p(basep); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } @@ -110,7 +110,7 @@ main() // conversion from adated::point to list ns::point basep(5, 3); adapted::point p(basep); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index b9000bbd..2e3f14ea 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -104,14 +104,14 @@ main() { // conversion from ns::point to vector ns::point p = {5, 3}; - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p = {5, 3}; - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_struct_named.cpp b/test/sequence/adapt_assoc_struct_named.cpp index 2cbf2f53..3ae0a380 100644 --- a/test/sequence/adapt_assoc_struct_named.cpp +++ b/test/sequence/adapt_assoc_struct_named.cpp @@ -48,7 +48,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep = {123, 456}; adapted::point p(basep); @@ -88,7 +88,7 @@ main() // conversion from adapted::point to vector ns::point basep = {5, 3}; adapted::point p(basep); - vector v(p); + vector v(p); v = p; } @@ -96,7 +96,7 @@ main() // conversion from adapted::point to list ns::point basep = {5, 3}; adapted::point p(basep); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_tpl_class.cpp b/test/sequence/adapt_assoc_tpl_class.cpp index 31a37d4c..d0647ae7 100644 --- a/test/sequence/adapt_assoc_tpl_class.cpp +++ b/test/sequence/adapt_assoc_tpl_class.cpp @@ -32,7 +32,7 @@ namespace ns public: point() : x(0), y(0) {} - point(X x, Y y) : x(x), y(y) {} + point(X in_x, Y in_y) : x(in_x), y(in_y) {} X get_x() const { return x; } Y get_y() const { return y; } @@ -102,14 +102,14 @@ main() { // conversion from point to vector point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from point to list point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_assoc_tpl_struct.cpp b/test/sequence/adapt_assoc_tpl_struct.cpp index b148c22b..ca751283 100644 --- a/test/sequence/adapt_assoc_tpl_struct.cpp +++ b/test/sequence/adapt_assoc_tpl_struct.cpp @@ -102,14 +102,14 @@ main() { // conversion from point to vector point p = {5, 3}; - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p = {5, 3}; - list l(p); + list l(p); l = p; } diff --git a/test/sequence/adapt_class.cpp b/test/sequence/adapt_class.cpp index d0081808..a584f49f 100644 --- a/test/sequence/adapt_class.cpp +++ b/test/sequence/adapt_class.cpp @@ -38,7 +38,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -106,14 +106,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_class_named.cpp b/test/sequence/adapt_class_named.cpp index a67d68da..8321a8be 100644 --- a/test/sequence/adapt_class_named.cpp +++ b/test/sequence/adapt_class_named.cpp @@ -38,7 +38,7 @@ namespace ns public: point() : x(0), y(0) {} - point(int x, int y) : x(x), y(y) {} + point(int in_x, int in_y) : x(in_x), y(in_y) {} int get_x() const { return x; } int get_y() const { return y; } @@ -71,7 +71,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep(123, 456); adapted::point p(basep); @@ -112,7 +112,7 @@ main() ns::point basep(5, 3); adapted::point p(basep); - fusion::vector v(p); + fusion::vector v(p); v = p; } @@ -121,7 +121,7 @@ main() ns::point basep(5, 3); adapted::point p(basep); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 981b9c13..7fd5cac0 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -97,14 +97,14 @@ main() { // conversion from ns::point to vector ns::point p = {5, 3}; - fusion::vector v(p); + fusion::vector v(p); v = p; } { // conversion from ns::point to list ns::point p = {5, 3}; - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_struct_named.cpp b/test/sequence/adapt_struct_named.cpp index 8dabc56c..ec803854 100644 --- a/test/sequence/adapt_struct_named.cpp +++ b/test/sequence/adapt_struct_named.cpp @@ -63,7 +63,7 @@ main() std::cout << tuple_delimiter(", "); { - BOOST_MPL_ASSERT_NOT((traits::is_view)); + BOOST_MPL_ASSERT((traits::is_view)); ns::point basep = {123, 456}; adapted::point p(basep); @@ -103,7 +103,7 @@ main() // conversion from adapted::point to vector ns::point basep = {5, 3}; adapted::point p(basep); - fusion::vector v(p); + fusion::vector v(p); v = p; } @@ -111,7 +111,7 @@ main() // conversion from adapted::point to list ns::point basep = {5, 3}; adapted::point p(basep); - fusion::list l(p); + fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_tpl_class.cpp b/test/sequence/adapt_tpl_class.cpp index 7a1b0be9..2478a570 100644 --- a/test/sequence/adapt_tpl_class.cpp +++ b/test/sequence/adapt_tpl_class.cpp @@ -40,7 +40,7 @@ namespace ns public: point() : x(0), y(0) {} - point(X x, Y y) : x(x), y(y) {} + point(X x_, Y y_) : x(x_), y(y_) {} X get_x() const { return x; } Y get_y() const { return y; } @@ -110,14 +110,14 @@ main() { // conversion from point to vector point p(5, 3); - boost::fusion::vector v(p); + boost::fusion::vector v(p); v = p; } { // conversion from point to list point p(5, 3); - boost::fusion::list l(p); + boost::fusion::list l(p); l = p; } diff --git a/test/sequence/adapt_tpl_struct.cpp b/test/sequence/adapt_tpl_struct.cpp index 13e4446c..0218fbae 100644 --- a/test/sequence/adapt_tpl_struct.cpp +++ b/test/sequence/adapt_tpl_struct.cpp @@ -97,14 +97,14 @@ main() { // conversion from point to vector point p = {5, 3}; - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p = {5, 3}; - list l(p); + list l(p); l = p; } diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp index 3bd6437f..8df03a63 100644 --- a/test/sequence/cons.cpp +++ b/test/sequence/cons.cpp @@ -26,6 +26,7 @@ main() { using namespace boost::fusion; using boost::is_same; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -39,18 +40,18 @@ main() make_cons(1, make_cons(hello)); BOOST_TEST((*begin(ns) == 1)); - BOOST_TEST((*next(begin(ns)) == hello)); + BOOST_TEST((*fusion::next(begin(ns)) == hello)); *begin(ns) += 1; - *next(begin(ns)) += ' '; + *fusion::next(begin(ns)) += ' '; BOOST_TEST((*begin(ns) == 2)); - BOOST_TEST((*next(begin(ns)) == hello + ' ')); + BOOST_TEST((*fusion::next(begin(ns)) == hello + ' ')); for_each(ns, boost::lambda::_1 += ' '); BOOST_TEST((*begin(ns) == 2 + ' ')); - BOOST_TEST((*next(begin(ns)) == hello + ' ' + ' ')); + BOOST_TEST((*fusion::next(begin(ns)) == hello + ' ' + ' ')); } { diff --git a/test/sequence/define_assoc_struct.cpp b/test/sequence/define_assoc_struct.cpp index bacc0bff..6f6326ec 100644 --- a/test/sequence/define_assoc_struct.cpp +++ b/test/sequence/define_assoc_struct.cpp @@ -75,14 +75,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_assoc_tpl_struct.cpp b/test/sequence/define_assoc_tpl_struct.cpp index 88623bcb..ec3c7f3b 100644 --- a/test/sequence/define_assoc_tpl_struct.cpp +++ b/test/sequence/define_assoc_tpl_struct.cpp @@ -79,14 +79,14 @@ main() { // conversion from point to vector point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_struct.cpp b/test/sequence/define_struct.cpp index 8aa535e8..8d839781 100644 --- a/test/sequence/define_struct.cpp +++ b/test/sequence/define_struct.cpp @@ -72,14 +72,14 @@ main() { // conversion from ns::point to vector ns::point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from ns::point to list ns::point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/define_tpl_struct.cpp b/test/sequence/define_tpl_struct.cpp index 58c1758b..a2193709 100644 --- a/test/sequence/define_tpl_struct.cpp +++ b/test/sequence/define_tpl_struct.cpp @@ -75,14 +75,14 @@ main() { // conversion from point to vector point p(5, 3); - vector v(p); + vector v(p); v = p; } { // conversion from point to list point p(5, 3); - list l(p); + list l(p); l = p; } diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index 5c4c1a0c..c052a37b 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -80,7 +80,9 @@ main() BOOST_STATIC_ASSERT(result_of::size::value == 4); } - { + //cschmidt: This is illegal C++. ADL instantiates less<_, int_<3> > - which + //leads to compile errors. + /*{ // $$$ JDG $$$ For some obscure reason, EDG based compilers // (e.g. comeau 4.3.3, intel) have problems with this. // vc7.1 and g++ are ok. The errors from comeau are useless. @@ -94,7 +96,7 @@ main() BOOST_TEST((view == make_vector(1, 2, 0, -1))); BOOST_STATIC_ASSERT(result_of::size::value == 4); #endif - } + }*/ { // Previous filtering out all values caused problems as begin was not equal to end diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp index d4062840..51288dbd 100644 --- a/test/sequence/iterator_range.cpp +++ b/test/sequence/iterator_range.cpp @@ -28,6 +28,7 @@ int main() { using namespace boost::fusion; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -104,9 +105,9 @@ main() BOOST_MPL_ASSERT((boost::is_same::type>::type>::type, char>)); std::cout << deref_data(begin(r)) << std::endl; - std::cout << deref_data(next(begin(r))) << std::endl; + std::cout << deref_data(fusion::next(begin(r))) << std::endl; BOOST_TEST((deref_data(begin(r)) == "foo")); - BOOST_TEST((deref_data(next(begin(r))) == 'x')); + BOOST_TEST((deref_data(fusion::next(begin(r))) == 'x')); } return boost::report_errors(); diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp index e53d333c..900b9a68 100644 --- a/test/sequence/joint_view.cpp +++ b/test/sequence/joint_view.cpp @@ -34,6 +34,7 @@ int main() { using namespace boost::fusion; + namespace fusion = boost::fusion; std::cout << tuple_open('['); std::cout << tuple_close(']'); @@ -175,11 +176,11 @@ main() , float>)); std::cout << deref_data(begin(j)) << std::endl; - std::cout << deref_data(boost::fusion::next(begin(j))) << std::endl; - std::cout << deref_data(next(boost::fusion::next(begin(j)))) << std::endl; + std::cout << deref_data(fusion::next(begin(j))) << std::endl; + std::cout << deref_data(fusion::next(fusion::next(begin(j)))) << std::endl; BOOST_TEST((deref_data(begin(j)) == 0)); - BOOST_TEST((deref_data(boost::fusion::next(begin(j))) == "foo")); - BOOST_TEST((deref_data(next(boost::fusion::next(begin(j)))) == 1.3f)); + BOOST_TEST((deref_data(fusion::next(begin(j))) == "foo")); + BOOST_TEST((deref_data(fusion::next(fusion::next(begin(j)))) == 1.3f)); } return boost::report_errors(); diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index d4e1cfa3..e419a7e0 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -29,6 +29,7 @@ main() using namespace boost::fusion; using namespace boost; using namespace std; + namespace fusion = boost::fusion; using boost::fusion::pair; using boost::fusion::make_pair; @@ -66,15 +67,15 @@ main() BOOST_STATIC_ASSERT((!result_of::has_key::value)); std::cout << deref_data(begin(m)) << std::endl; - std::cout << deref_data(next(begin(m))) << std::endl; + std::cout << deref_data(fusion::next(begin(m))) << std::endl; BOOST_TEST(deref_data(begin(m)) == 'X'); - BOOST_TEST(deref_data(next(begin(m))) == "Men"); + BOOST_TEST(deref_data(fusion::next(begin(m))) == "Men"); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, double>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type, char>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, double>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, char>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); } { diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index 4c51a18c..c5b58b45 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -151,7 +151,7 @@ test() { // testing front & back typedef FUSION_SEQUENCE tup; - tup t(1, 2.2, "Kimpo"); + tup t(1, 2.2f, "Kimpo"); BOOST_TEST(front(t) == 1); #if !defined(FUSION_FORWARD_ONLY) // list has no back diff --git a/test/sequence/nview.cpp b/test/sequence/nview.cpp index e8110f79..dab982a5 100644 --- a/test/sequence/nview.cpp +++ b/test/sequence/nview.cpp @@ -26,7 +26,7 @@ BOOST_FUSION_ADAPT_STRUCT( (int, int_) (std::string, string_) (double, double_) -); +) namespace fusion = boost::fusion; diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index 7be0b078..4a39c89a 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -29,6 +29,7 @@ main() using namespace boost::fusion; using namespace boost; using namespace std; + namespace fusion = boost::fusion; using boost::fusion::pair; using boost::fusion::make_pair; @@ -61,15 +62,15 @@ main() BOOST_STATIC_ASSERT((!result_of::has_key::value)); std::cout << deref_data(begin(m)) << std::endl; - std::cout << deref_data(next(begin(m))) << std::endl; + std::cout << deref_data(fusion::next(begin(m))) << std::endl; BOOST_TEST(deref_data(begin(m)) == 123); - BOOST_TEST(deref_data(next(begin(m))) == "Hola"); + BOOST_TEST(deref_data(fusion::next(begin(m))) == "Hola"); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type, int>::value)); - BOOST_STATIC_ASSERT((is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type, int>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::type>::type, std::string>::value)); } { diff --git a/test/sequence/tr1_tuple_auto_conv.cpp b/test/sequence/tr1_tuple_auto_conv.cpp index 0c20fa3f..010d4c71 100644 --- a/test/sequence/tr1_tuple_auto_conv.cpp +++ b/test/sequence/tr1_tuple_auto_conv.cpp @@ -48,7 +48,7 @@ namespace Core } // namespace Core -int main(int argc, char* argv[]) +int main() { std::tr1::tuple test = Core::Demo(); return 0;